Scala的静态分析工具的当前状态是什么?

mar*_*nfo 59 static-analysis scala scalastyle sonarqube

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

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

另外,Scala与Sonar的整合怎么样?Scala Sonar插件(适用于Scalastyle)是否可靠?

mon*_*ack 60

以下是截至2014年8月的一些更新答案,其中包含针对Scala的目标或工作情况.

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


Gáb*_*kos 8

请问wartremover算作另类?还-Xlint和-Ywarn-adapted-argsscalac的命令行参数可能有助于捕捉某些类型的错误.


ped*_*o91 5

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

看一看

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


Mit*_*tem 0

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

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

...ETC。

  • 问题是编译器是否提出了所有建议。例如,javac 并不总是建议 Eclipse 和 IntelliJ 静态分析器建议的所有“lint”类型的内容。如果编译器建议一切,就不需要 Findbugs 或 PMD。我假设在 Scala 世界中,情况是相同的 - 即并非所有代码气味都会被编译器检查,例如复制粘贴(非 DRY)代码或其他任何代码。 (3认同)