java PMD 分别代表啥.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java PMD 分别代表啥.相关的知识,希望对你有一定的参考价值。
问题是“P”, “M”, “D” 什么含义,是不是什么的缩写?词面有什么意思
《Java超级工具》囊括了30个开源工具,专门用于提高任何规模的团队或者组织中Java开发人员的实践水平。每一章都包含针对一个特定工具的一系列短小精悍的小节——无论这个工具用于构建系统、版本控制或者开发流程中的其他方面——这样你就相当于在一个包装里得到了30本简短的书籍。
无论你选择哪一种开发方式——敏捷、Rational统一过程(RUP)、极限编程(XP)、SCRUM或者其他——本书中的实践技巧和工具都使得流程自动化和更优化。《Java超级工具》探讨关键的Java开发问题领域和最佳实践,并且专注于在开发周期的各个环节能够提高生产力的开源工具,包括:
构建工具,例如Ant和Maven 2
版本控制工具,例如CVS和Subversion
质量度量工具,例如CheckStyle、PMD、FindBugs和 Jupiter
用来生成良好文档同时降低写文档和维护文档耗时的工具
单元测试工具,例如JUnit 4、TestNG以及开源测试覆盖工具Cobertura
集成测试、负载测试和性能测试自动化;网络服务、Swing接口和网络接口的自动化测试
问题管理工具,如Bugzilla和Trac
持续集成工具,例如Continuum、CruiseControl、LuntBuild和Hudson
提高开发实践水平并且让你在开发流程中的日子更容易些。《Java超级工具》对于核心开发人员和软件架构师而言是必读书目,能让他们的职业生涯秩序井然。 参考技术A java 只是一门编程语言,如同c、c++、c#等
pmd 则是一个代码质量度量工具,与此同时还有CheckStyle、PMD、FindBugs和 Junit等 参考技术B PMD - Java代码检查工具
PMD 和 FindBugs 有啥区别?
【中文标题】PMD 和 FindBugs 有啥区别?【英文标题】:What are the differences between PMD and FindBugs?PMD 和 FindBugs 有什么区别? 【发布时间】:2011-05-16 20:52:59 【问题描述】:有一个question comparing PMD and CheckStyle。但是,我找不到关于 PMD 和 FindBugs 之间差异/相似性的详细分类。我相信一个关键的区别是 PMD 处理源代码,而 FindBugs 处理编译的字节码文件。但就能力而言,它应该是一个非此即彼的选择还是相辅相成?
【问题讨论】:
【参考方案1】:PMD 是
著名 广泛应用于工业 您可以在 xml 中添加规则 为您提供错误级别和警告级别的详细分析 您还可以扫描您的代码以获取“复制和粘贴行”。重复代码。这为实现 java oops 提供了一个好主意。【讨论】:
不与 FindBugs 对话;它们是互补的,因为它们的问题集并不相同。【参考方案2】:PMD 的最佳特性是它的 XPath 规则,它与规则设计器捆绑在一起,让您可以轻松地从代码示例构建新规则(类似于 RegEx 和 XPath GUI 构建器)。 FindBugs 开箱即用更强大,但构建项目特定的规则和模式非常重要。
例如,我遇到了一个涉及 2 个嵌套 for 循环的性能问题,导致运行时间为 O(n^2),这很容易避免。我使用 PMD 构造了一个 ad-hoc 查询,以查看嵌套 for 循环的其他实例 - //ForStatement/Statement//ForStatement。这指出了该问题的另外 2 个实例。这不是一个通用规则。
【讨论】:
【参考方案3】:我两个都用。我认为它们是相辅相成的。
正如您所说,PMD 处理源代码,因此会发现以下问题:违反命名约定、缺少花括号、空检查错误、参数列表过长、不必要的构造函数、开关中缺少中断等。PMD 也告诉你代码的Cyclomatic complexity 我觉得很有帮助(FindBugs 没有告诉你循环复杂度)。
FindBugs 作用于字节码。以下是 FindBugs 发现的 PMD 没有发现的一些问题:equals() 方法在子类型上失败,clone 方法可能返回 null,布尔值的参考比较,不可能的强制转换,32 位 int 移位的量不在 0-31 范围内,包含自身的集合,equals 方法总是返回 true,无限循环等。
通常他们每个人都会发现一组不同的问题。两者都用。这些工具教会了我很多关于如何编写好的 Java 代码的知识。
【讨论】:
当集合包含自身时,您看到的具体错误代码是什么?为什么这会被 FindBugs 标记为可能的错误? 好吧,因为 Sonarqube 6.3 不再... Sonarqube 现在需要 Java 8 而 Findbugs 只支持 Java 7以上是关于java PMD 分别代表啥.的主要内容,如果未能解决你的问题,请参考以下文章
java 里面的PATH和CLASSPATH分别代表啥路径 该怎样设置
java中setAttribute(string name, object value) 请问 string name和 object value 分别代表啥意思