1

现在,我们有很多用于java中静态代码分析的工具。

例如:

  • PMD
  • CPD
  • 查找错误
  • 检查样式
  • 声纳
  • 依赖

等等

在一个应用程序中使用所有这些工具是否很好(使用 maven,如果出现负面情况,我们将无法构建)。它们是可互换的还是检查大致相同?或者它只是多余的?也许这些工具有一些类别?

4

5 回答 5

4

Sonar 的目的是汇总所有核心分析引擎(如 PMD、Findbugs、Checkstyle)的结果,这就是 Sonar 嵌入所有这些工具以及更多工具的原因。

所以我的建议是建立一个基于 Sonar 的持续检查服务器,不要担心任何其他工具,因为你会在 Sonar 中得到最好的。

您可以阅读以下有关持续检查的博客文章:http: //www.sonarsource.org/continuous-inspection-practice-emerges-with-sonar/

于 2012-05-25T10:02:05.160 回答
1

我只使用 FindBugs - 伟大的工具。真正有助于定义问题/潜在问题的地方。

但有时您的代码应该以 FindBugs 提供冗余错误/警告的方式实现。认为可以通过一些注释来抑制它。

但是你永远不会用这个工具代替好的代码审查。

于 2012-05-25T08:17:00.230 回答
1

它们不可互换,但您不需要在同一个应用程序中全部使用它们。

分类:

  1. 报告 - Sonar 为您正在使用的其他工具(加上 JUnit 等)提供了一个漂亮的可视化仪表板
  2. 静态分析 - PMD、FindBugs、CheckStyle
  3. 重复代码 - CPD
  4. 设计/包依赖项 - JDepend
于 2012-05-26T02:57:13.960 回答
0

这取决于您要执行的规则集。使用其他工具只有在提供额外检查时才有意义。另一个问题是,您必须以不检查相互矛盾的规则的方式配置所有工具。最后,你会得到很多多余的警告。结论:尝试找到一套最少的工具来提供您需要的所有检查。

于 2012-05-25T08:56:20.133 回答
0

qulice.com(Maven 项目的复合静态分析工具)中,我们使用 Checkstyle、PMD、FindBugs 和一些我们的自定义规则。它们在某个地方相互冲突,我们必须通过禁用其中一个规则来解决冲突。除此之外,这三个开源静态分析器共同存在并执行最重要(和简单)的设计原则。

于 2012-11-18T12:32:10.937 回答