现在,我们有很多用于java中静态代码分析的工具。
例如:
- PMD
- CPD
- 查找错误
- 检查样式
- 声纳
- 依赖
等等
在一个应用程序中使用所有这些工具是否很好(使用 maven,如果出现负面情况,我们将无法构建)。它们是可互换的还是检查大致相同?或者它只是多余的?也许这些工具有一些类别?
现在,我们有很多用于java中静态代码分析的工具。
例如:
等等
在一个应用程序中使用所有这些工具是否很好(使用 maven,如果出现负面情况,我们将无法构建)。它们是可互换的还是检查大致相同?或者它只是多余的?也许这些工具有一些类别?
Sonar 的目的是汇总所有核心分析引擎(如 PMD、Findbugs、Checkstyle)的结果,这就是 Sonar 嵌入所有这些工具以及更多工具的原因。
所以我的建议是建立一个基于 Sonar 的持续检查服务器,不要担心任何其他工具,因为你会在 Sonar 中得到最好的。
您可以阅读以下有关持续检查的博客文章:http: //www.sonarsource.org/continuous-inspection-practice-emerges-with-sonar/
我只使用 FindBugs - 伟大的工具。真正有助于定义问题/潜在问题的地方。
但有时您的代码应该以 FindBugs 提供冗余错误/警告的方式实现。认为可以通过一些注释来抑制它。
但是你永远不会用这个工具代替好的代码审查。
它们不可互换,但您不需要在同一个应用程序中全部使用它们。
分类:
这取决于您要执行的规则集。使用其他工具只有在提供额外检查时才有意义。另一个问题是,您必须以不检查相互矛盾的规则的方式配置所有工具。最后,你会得到很多多余的警告。结论:尝试找到一套最少的工具来提供您需要的所有检查。
在qulice.com(Maven 项目的复合静态分析工具)中,我们使用 Checkstyle、PMD、FindBugs 和一些我们的自定义规则。它们在某个地方相互冲突,我们必须通过禁用其中一个规则来解决冲突。除此之外,这三个开源静态分析器共同存在并执行最重要(和简单)的设计原则。