我在Scala中看到了关于静态分析的StackOverflow问题,但是在2009年得到了回答。如您所知,Scala工具正在快速变化。
因此,我想知道熟悉Scala中当前静态分析工具状态的人是否可以告诉我,例如,Scala的Findbugs等价物是否存在。我发现Findbugs为Scala发出了许多不必要的警告,可能与"对象"的方式有关。由于特征等原因,单例编译成字节码。我听说Scalastyle不仅是Java的CheckStyle的Scala版本,它还包含了一些Findbugs和PMD。但如果它没有实现所有的Findbugs和/或PMD,那么还有其他工具可以补充它吗?或者,Scalastyle不仅适用于样式检查,还有助于提高代码质量吗?
另外,Scala与Sonar的整合怎么样? Scala Sonar插件(适用于Scalastyle)是否可靠?
答案 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月)
答案 4 :(得分:0)
为什么不喜欢使用功能非常强大的Scalac编译器?例如。它有一些有用的选择,例如
...等