在一个应用程序中使用大量静态分析工具

时间:2012-05-25 07:52:02

标签: java sonarqube code-analysis findbugs pmd

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

例如:

  • PMD
  • CPD
  • FindBugs的
  • CheckStyle的
  • 声纳
  • JDepend

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

5 个答案:

答案 0 :(得分:3)

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

所以我的建议是建立一个基于Sonar的连续检测服务器,不要担心任何其他工具,因为你将使用Sonar充分利用它们。

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

答案 1 :(得分:1)

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

但是有些时候你的代码应该以FindBugs给出redudant错误/警告的方式实现。认为可以通过一些注释来抑制它。

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

答案 2 :(得分:1)

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

分类

  1. 报告 - Sonar提供了您正在使用的其他工具的良好视觉仪表板(以及JUnit等)
  2. 静态分析 - PMD,FindBugs,CheckStyle
  3. 重复代码 - CPD
  4. 设计/包依赖项 - JDepend

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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