首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Checkstyvs.PMD

Checkstyvs.PMD
EN

Stack Overflow用户
提问于 2008-10-08 19:52:55
回答 16查看 70.2K关注 0票数 93

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

这两者都有好处吗?我不想维护两个工具,如果其中一个将工作。如果我们选择一个,我们应该使用哪一个,为什么?

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

更新:的共识似乎是,PMD优先于CheckStyle。我不认为使用这两种方法都有充分的理由,我也不想维护2组规则文件,所以我们可能只针对PMD。我们还将引入FindBugs,也许最终还会引入Macker来执行体系结构规则。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2008-10-08 20:03:05

您绝对应该使用FindBugs。根据我的经验,假阳性率很低,即使是它报告的最不重要的警告也值得在某种程度上加以处理。

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

票数 79
EN

Stack Overflow用户

发布于 2008-10-08 20:12:17

这两个软件都很有用。检查风格将帮助您在编程期间检查您的编码风格,即大括号,命名等。简单的事情,但非常多!

PMD将帮助您检查更复杂的规则,比如在类的设计过程中,或者对于更特殊的问题,比如正确地实现克隆函数。简单地说,PMD将检查您的编程风格。

然而,这两个软件都有类似的规则,有时解释得很糟糕。如果配置不好,您可能会检查两次或两次相反的情况,即“删除无用的构造函数”和“始终有一个构造函数”。

票数 42
EN

Stack Overflow用户

发布于 2011-09-06 15:06:51

如果我们选择一个,我们应该使用哪一个,为什么?

这些工具不是相互竞争的,而是相辅相成的,应该同时使用。

惯例类型(Checkstyle)是一种粘合剂,使人们能够一起工作,释放他们的创造力,而不是花费时间和精力来理解不一致的代码。

检查式示例:

  • 公共方法上有javadoc吗?
  • 该项目是否遵循Sun命名约定?
  • 代码是否以一致的格式编写?

当PMD提醒你不良行为时:

  • 不做任何事情就捕获异常
  • 有死码
  • 太多复杂的方法
  • 直接使用实现而不是接口
  • 实现hashcode()方法,而不使用非等于( object)方法

来源:http://www.sonarsource.org/what-makes-checkstyle-pmd-findbugs-and-macker-complementary/

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/184563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档