是否有类似于Java的FindBugs和PMD或C/C++的Splint用于对Scala代码进行静态分析的工具?我知道FindBugs适用于编译Java产生的字节码,因此我很好奇它如何在Scala上工作。
截至2009年10月27日的Google搜索结果很少。
截至2010年2月1日的Google搜索结果只有这个问题。
是否有类似于Java的FindBugs和PMD或C/C++的Splint用于对Scala代码进行静态分析的工具?我知道FindBugs适用于编译Java产生的字节码,因此我很好奇它如何在Scala上工作。
截至2009年10月27日的Google搜索结果很少。
截至2010年2月1日的Google搜索结果只有这个问题。
FindBugs分析JVM字节码,不考虑生成字节码的工具。我尝试使用FindBugs检查由Scala生成的.class文件。不幸的是,即使对于微不足道的Scala程序,FindBugs也产生了许多警告。
现在有一个名为Scalastyle
的工具,它可以完成Java中Checkstyle工具的任务。这不仅包括格式检查,还包括一些针对已知错误源的检查,例如实现了hashCode()但未实现equals()方法的类。
目前大约有40个检查,但我们一直在添加更多检查。
欲了解更多信息,请访问www.scalastyle.org。
这方面正在进行一些工作。以下是一些链接:
Scala邮件列表上也有讨论内容,存档在这里。
Findbugs和其他基于字节码的工具可以发挥作用,它们可以发现代码中的错误。但不幸的是,基于字节码的方法已经针对javac编译器的输出进行了调整,这意味着它们很可能会产生非常高的误报率,并且会忽略基本问题,因为Scala将生成与javac编译器不同的习语。
我对Scala不是很了解,但如果它与Java兼容,Klocwork的Solo产品可能适用。您可以在此处找到Klocwork Solo。