检查样式与 PMD

我们正在将静态分析工具引入到 Java 产品的构建系统中。我们正在使用Maven2,因此CheckstylePMD集成是免费的。但是,在执行基本样式规则方面,这两个工具之间的功能似乎有很大的重叠。

利用这两者是否有好处?我不想维护2个工具,如果一个可以工作的话。如果我们选择一个,我们应该使用哪一个,为什么?

我们还计划使用FindBugs。还有其他我们应该研究的静态分析工具吗?

更新:共识似乎是PMD优于CheckStyle。我没有看到使用两者的充分理由,我也不想维护2组规则文件,因此我们可能会专门针对PMD。我们还将引入FindBugs,也许最终会引入Macker来执行架构规则。


答案 1

你绝对应该使用FindBugs。根据我的经验,误报率非常低,即使是它报告的最不严重的警告也值得在某种程度上解决。

至于Checkstyle与PMD,我不会使用Checkstyle,因为它几乎只关注风格。根据我的经验,Checkstyle会报告大量完全不相关的事情。另一方面,PMD也能够指出有问题的编码实践,其输出通常更相关和有用。


答案 2

这两个软件都很有用。Checkstyle将通过检查您的编码风格(即大括号,命名等)在编程过程中为您提供帮助。简单的事情,但非常多!

PMD 将通过检查更复杂的规则(例如在设计类期间)或解决更特殊的问题(例如正确实现克隆函数)来为您提供帮助。简单地说,PMD将检查您的编程风格

但是,这两种软件都受到类似规则的影响,有时解释得不好。对于糟糕的配置,您可能会检查两次或两个相反的事情,即“删除无用的构造函数”和“始终有一个构造函数”。


推荐