是否有执行的Scala代码静态分析任何工具? [关闭](Are there any tools

2019-08-22 18:15发布

是否有执行的Scala代码静态分析任何工具,类似于FindBugs的和PMD的Java或夹板固定C / C ++? 我知道FindBugs的工作由编译Java产生的字节码,所以我很好奇,这将如何在斯卡拉工作。

谷歌搜索(截至2009年10月27日)透露甚少。

谷歌搜索(如2010年01月年2月)揭示了这个问题。

Answer 1:

FindBugs的分析JVM字节代码,无论生成它们的工具。 我已经使用的FindBugs检查的.class由斯卡拉生成的文件试过。 不幸的是,FindBugs的产生了许多警告,即使是微不足道的Scala程序。



Answer 2:

现在有Scalastyle这是不确实的Checkstyle Java的工作。 这不仅包括格式化检查,但也有一些检查缺陷的公知的源,例如,它实现的hashCode(),但不等于一个类。

目前大约有40检查,但我们正在增加他们所有的时间。

欲了解更多信息,请参见www.scalastyle.org 。



Answer 3:

有一些工作在这个方向继续。 一些链接:

  • https://github.com/alacscala/scala-corpus
  • https://github.com/alacscala/alacs
  • https://bitbucket.org/jmhofer/findbugs4sbt/wiki/Home

还有斯卡拉邮件列表上的讨论,可存档这里 。



Answer 4:

下面是一个更新的答案截至8月2014年一些旨在或使用Scala工作。

我个人认为,JVM或Java的人结了太多太多的误报,或者有在特定的Java类主要针对检查。 例如,由于在Scala中,我们不倾向于使用Java集合,并不需要所有的FindBugs基于集合的检查。 另一个例子是使用静态字段这是在斯卡拉无关的检查。

  • Scalastyle https://github.com/scalastyle/scalastyle
  • 替罪羊https://github.com/sksamuel/scalac-scapegoat-plugin
  • 除疣https://github.com/typelevel/wartremover
  • 短绒https://github.com/HairyFotr/linter
  • CPD https://github.com/sbt/cpd4sbt


Answer 5:

FindBugs的和其他工具是基于字节码会的工作,在这个意义上,他们会发现在你的代码错误。 不幸的是,基于字节码的方法已被调兑的javac编译器的输出,这意味着他们很可能会产生非常高的假阳性率,而错过基本问题,因为Scala将生产比javac编译器,不同的成语。



Answer 6:

我有很多的乐趣与Codacy(如https://www.codacy.com/app/hejfelix/Frase/dashboard )开源项目



Answer 7:

有一个SBT插件PMD复制粘贴检测CPD。

https://github.com/sbt/cpd4sbt



Answer 8:

斯卡拉复制粘贴探测器的基础上,AST。 寻找复制粘贴子树/ AST的,并告知一下。

它的插件为SBT。

https://github.com/ajtkulov/scala-cpd



Answer 9:

我不知道很多关于斯卡拉但如果是兼容Java Klocwork的单品可能会奏效。 你可以在这里找到它Klocwork的独奏



文章来源: Are there any tools for performing static analysis of Scala code? [closed]