Rom*_*gan 46 testing functional-programming static-analysis scala
是否有用于执行Scala代码静态分析的工具,类似于FindBugs和PMD for Java或Splint for C/C++?我知道FindBugs可以处理编译Java所产生的字节码,所以我很好奇它如何在Scala上运行.
谷歌搜索(截至2009年10月27日)显示的很少.
谷歌搜索(截至2010年2月1日)揭示了这个问题.
Chr*_*son 20
FindBugs分析JVM字节代码,无论生成它们的工具如何.我尝试使用FindBugs来检查Scala生成的.class文件.不幸的是,FindBugs产生了许多警告,即使对于琐碎的Scala程序也是如此.
Mat*_*ell 17
现在Scalastyle
,Checkstyle为Java做了哪些工作.这不仅包括格式化检查,还包括对已知错误源的一些检查,例如实现hashCode()但不是equals的类.
目前大约有40个支票,但我们一直在添加它们.
有关更多信息,请访问www.scalastyle.org.
fol*_*one 16
这方面正在进行一些工作.一些链接:
还有关于scala邮件列表的讨论,此处提供存档.
以下是截至2014年8月的一些更新答案,其中包含针对Scala的目标或工作情况.
就个人而言,我认为JVM或Java最终会出现太多误报,或者主要针对Java特定类进行检查.例如,因为在Scala中我们不倾向于使用Java集合,所以不需要所有基于findbugs集合的检查.另一个例子是使用与Scala无关的静态字段的检查.
Findbugs和其他基于字节码的工具将起作用,因为它们会在代码中发现错误.遗憾的是,基于字节码的方法已针对javac编译器的输出进行了调整,这意味着它们可能会产生非常高的误报率,并且会错过基本问题,因为Scala将生成与javac编译器不同的习语.