我们在Java产品的构建系统中引入了静态分析工具。我们正在使用Maven2,所以格子式和PMD集成是免费的。但是,在执行基本样式规则方面,这两个工具的功能似乎有很大的重叠。
这两者都有好处吗?我不想维护两个工具,如果其中一个将工作。如果我们选择一个,我们应该使用哪一个,为什么?
我们还计划使用FindBugs。还有其他的静态分析工具吗?
更新:的共识似乎是,PMD优先于CheckStyle。我不认为使用这两种方法都有充分的理由,我也不想维护2组规则文件,所以我们可能只针对PMD。我们还将引入FindBugs,也许最终还会引入Macker来执行体系结构规则。
发布于 2008-10-08 20:03:05
您绝对应该使用FindBugs。根据我的经验,假阳性率很低,即使是它报告的最不重要的警告也值得在某种程度上加以处理。
至于Checkstyvs.PMD,我不会使用Checkstyle,因为它几乎只关注样式。根据我的经验,Checkstyle会报道一堆完全无关的事情。另一方面,PMD也能够指出有问题的编码实践,其输出通常更为相关和有用。
发布于 2008-10-08 20:12:17
这两个软件都很有用。检查风格将帮助您在编程期间检查您的编码风格,即大括号,命名等。简单的事情,但非常多!
PMD将帮助您检查更复杂的规则,比如在类的设计过程中,或者对于更特殊的问题,比如正确地实现克隆函数。简单地说,PMD将检查您的编程风格。
然而,这两个软件都有类似的规则,有时解释得很糟糕。如果配置不好,您可能会检查两次或两次相反的情况,即“删除无用的构造函数”和“始终有一个构造函数”。
发布于 2011-09-06 15:06:51
如果我们选择一个,我们应该使用哪一个,为什么?
这些工具不是相互竞争的,而是相辅相成的,应该同时使用。
惯例类型(Checkstyle)是一种粘合剂,使人们能够一起工作,释放他们的创造力,而不是花费时间和精力来理解不一致的代码。
检查式示例:
当PMD提醒你不良行为时:
来源:http://www.sonarsource.org/what-makes-checkstyle-pmd-findbugs-and-macker-complementary/
https://stackoverflow.com/questions/184563
复制相似问题