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

时间:2014-03-24 18:29:52

标签: scala static-analysis sonarqube scalastyle

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

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

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

5 个答案:

答案 0 :(得分:60)

以下是截至2014年8月的一些更新答案,其中一些针对Scala的目标或效果很好。

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

答案 1 :(得分:8)

wartremover会被视为另类吗?此外,scalac的-Xlint-Ywarn-adapted-args命令行参数可能有助于捕获某些类型的错误。

答案 2 :(得分:4)

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

看看

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

答案 3 :(得分:1)

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

  1. ScalaStyle
  2. WartRemover
  3. Abide
  4. Scapegoat - sbt-scapegoat适用于Scala 2.11.x +
  5. 来源: Codacy blog on Scala Static Analysis tools

答案 4 :(得分:0)

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

  • -unchecked
  • -deprecation
  • -feature

...等