67

我在 Scala 中看到了一个关于静态分析的 StackOverflow 问题,但这个问题在 2009 年得到了回答。如您所知,Scala 工具正在迅速变化。

因此,我想知道是否有人熟悉 Scala 中静态分析工具的当前状态,是否可以告诉我是否存在与 Scala 等效的 Findbugs。我发现 Findbugs 对 Scala 发出了许多不必要的警告,可能与“对象”单例编译为字节码的方式有关,由于特征等。我听说 Scalastyle 不仅是 Java 的 CheckStyle 的 Scala 版本,它还包括一些 Findbugs 和 PMD。但如果它没有实现所有 Findbugs 和/或 PMD,那么还有其他工具可以补充它吗?或者,Scalastyle 不仅对样式检查有好处,而且对提高代码质量有好处吗?

另外,Scala 与 Sonar 的集成情况如何?Scala Sonar 插件(与 Scalastyle 一起使用)可靠吗?

4

5 回答 5

63

这是截至 2014 年 8 月针对一些针对 Scala 或与 Scala 配合良好的更新答案。

就我个人而言,我认为 JVM 或 Java 最终会出现太多误报,或者进行主要针对 Java 特定类的检查。例如,由于在 Scala 中我们不倾向于使用 Java 集合,因此不需要所有基于 findbugs 集合的检查。另一个例子是检查使用与 Scala 无关的静态字段。

于 2014-08-04T11:00:27.140 回答
8

wartremover被视为替代品吗?此外-Xlint-Ywarn-adapted-argsscalac 的命令行参数可能有助于捕捉某些类型的错误。

于 2014-03-24T20:12:49.447 回答
5

Codacy开发了一个易于定制的工具——scala-meta:https ://github.com/codacy/codacy-scalameta

看一看

我认为find-sec-bugs对 scala 有一些支持

于 2016-06-29T19:43:54.833 回答
2

根据 Codacy,以下是工具(更新至 2015 年 10 月)

  1. 斯卡拉风格
  2. 除疣剂
  3. 遵守
  4. Scapegoat - sbt-scapegoat 与 Scala 2.11.x+ 一起使用

资料来源: 关于 Scala 静态分析工具的 Codacy 博客

于 2016-10-21T09:51:57.447 回答
0

你为什么不喜欢使用一个非常强大的 Scalac 编译器呢?例如,它有一些有用的选项,例如

  • -未选中
  • -弃用
  • -特征

...ETC。

于 2014-03-24T18:57:14.190 回答