是否有执行的Scala代码静态分析任何工具,类似于FindBugs的和PMD的Java或夹板固定C / C ++? 我知道FindBugs的工作由编译Java产生的字节码,所以我很好奇,这将如何在斯卡拉工作。
谷歌搜索(截至2009年10月27日)透露甚少。
谷歌搜索(如2010年01月年2月)揭示了这个问题。
是否有执行的Scala代码静态分析任何工具,类似于FindBugs的和PMD的Java或夹板固定C / C ++? 我知道FindBugs的工作由编译Java产生的字节码,所以我很好奇,这将如何在斯卡拉工作。
谷歌搜索(截至2009年10月27日)透露甚少。
谷歌搜索(如2010年01月年2月)揭示了这个问题。
FindBugs的分析JVM字节代码,无论生成它们的工具。 我已经使用的FindBugs检查的.class由斯卡拉生成的文件试过。 不幸的是,FindBugs的产生了许多警告,即使是微不足道的Scala程序。
现在有Scalastyle
这是不确实的Checkstyle Java的工作。 这不仅包括格式化检查,但也有一些检查缺陷的公知的源,例如,它实现的hashCode(),但不等于一个类。
目前大约有40检查,但我们正在增加他们所有的时间。
欲了解更多信息,请参见www.scalastyle.org 。
有一些工作在这个方向继续。 一些链接:
还有斯卡拉邮件列表上的讨论,可存档这里 。
下面是一个更新的答案截至8月2014年一些旨在或使用Scala工作。
我个人认为,JVM或Java的人结了太多太多的误报,或者有在特定的Java类主要针对检查。 例如,由于在Scala中,我们不倾向于使用Java集合,并不需要所有的FindBugs基于集合的检查。 另一个例子是使用静态字段这是在斯卡拉无关的检查。
FindBugs的和其他工具是基于字节码会的工作,在这个意义上,他们会发现在你的代码错误。 不幸的是,基于字节码的方法已被调兑的javac编译器的输出,这意味着他们很可能会产生非常高的假阳性率,而错过基本问题,因为Scala将生产比javac编译器,不同的成语。
我有很多的乐趣与Codacy(如https://www.codacy.com/app/hejfelix/Frase/dashboard )开源项目
有一个SBT插件PMD复制粘贴检测CPD。
https://github.com/sbt/cpd4sbt
斯卡拉复制粘贴探测器的基础上,AST。 寻找复制粘贴子树/ AST的,并告知一下。
它的插件为SBT。
https://github.com/ajtkulov/scala-cpd
我不知道很多关于斯卡拉但如果是兼容Java Klocwork的单品可能会奏效。 你可以在这里找到它Klocwork的独奏