PMD(http://pmd.sourceforge.net/)
简介:PMD扫描java源代码,查找潜在的问题,如:
可能的bugs,如空的try/catch/finally/switch声明
死亡的代码,没有使用的本地变量,参数和私有方法
不合标准的代码,如String/StringBuffer用法
过于复杂的表达式,如不必要的if表达式
重复的代码,拷贝、粘贴的代码
PMD的含义,如
Project Mess Detector
Project Monitoring Directives
Project Meets Deadline
Programming Mistake Detector…
用法:可以在命令行下执行,如
pmd c:\Test.java xml rulesets/unusedcode.xml
也可以使用IDE的插件,如Eclipse、IDEA、JBuilder、JCreator等等
这里主要介绍Ant里的调用,
下面是主要的Ant配置信息
自定义规则:
有两个办法来自定义规则,可以编写java类和编写XPath,编写java类的一般步骤是,先确定要查找的代码形式,利用PMD自带的designer.bat工具查看AST(抽象语法树),然后编写规则类(继承net.sourceforge.pmd.AbstractRule),然后编写一个ruleset的XML文件,最后就可以运行PMD进行检查。编写XPath比编写java类要容易些,但也需要掌握AST的含义,利用designer.bat工具可以查看AST,比如//ClassBody [count(//VariableDeclarator[../Type/Name[@Image='Logger']])>1],这个表达式就是查找类的代码里是否声明了多个Logger,然后编写一个ruleset的XML文件,最后运行PMD进行检查。这里是一个ruleset的XML文件的例子。
自定义规则集合:
PMD自带了很多代码规范的规则,还可以自定义规则,我们可以把这些规则整合到一起,按照我们的需求进行代码检查。
最后,我们运行PMD的时候就可以指定这个ruleset文件。
自带规则的介绍:
PMD自带了很多规则集合,并且分类写入不同的ruleset文件,如
Basic包含每人都必须遵守的代码最佳实践,如EmptyCatchBlock
Braces关于条件分支的规则,如IfStmtsMustUseBraces
Code Size关于代码大小的规则,如方法的长度,参数的长度,属性的个数等
Clone克隆实现的规则,如是否有super.clone()
Controversial一些有争议的规则,如UnnecessaryConstructor不必要的构造器
Coupling对象连接有关的规则
Design可以检查有问题的设计,如SwitchStmtsShouldHaveDefault
Finalizers使用finalizers时需遵循的规则,如FinalizeOnlyCallsSuperFinalize
Import Statements和import有关的规则,如DuplicateImports重复import
J2EE唯一规则UseProperClassLoader,class.getClassLoader()可能不正确,用
Thread.currentThread().getContextClassLoader()代替
Javabeans和javabean规范有关的规则,有BeanMembersShouldSerialize属性必须
序列化和MissingSerialVersionUID缺少序列化ID
JUnit Tests和JUnit测试有关的,如JUnitSpelling拼写检查等
Logging (Java)检查Logger的一些错误用法,如MoreThanOneLogger多个Logger
Logging (Jakarta)使用Jakarta Logger的一些规则,有UseCorrectExceptionLogging
异常处理不当和ProperLogger是否正确定义Logger
MigratingJDK版本移植的规则,如ReplaceVectorWithList用List代替Vector
Naming和命名有关的规则,名称太短或太长,命名的约定等
Optimizations优化性能的一些规则,如LocalVariableCouldBeFinal本地变量如果
只赋值一次,则应该声明为final
Strict Exceptions比较严格的异常处理方针,如AvoidCatchingThrowable
Strings使用String和StringBuffer时应遵守的规则,如StringToString
Sun Security编写安全的代码,有MethodReturnsInternalArray直接返回内部的数组,
更安全的做法是返回一个拷贝和ArrayIsStoredDirectly
Unused Code检查未使用的代码,如UnusedPrivateField未使用的私有属性
Java Server Pages编写jsp的一些方针,如NoLongScripts
Java Server Faces编写jsf的一些方针,有DontNestJsfInJstlIteration,在Jsf
里使用jstl的标签
PMD里面还有一个写好的ruleset文件,在pmd-3.8.jar里面的rulesets文件夹下,名称是favorites.xml,以下是主要部分:
其它事项:
1.可以使用JDK1.5的声明@SuppressWarnings(""),禁止PMD的警告。
2.可以使用//NOPMD来标记行或块代码,禁止PMD警告。
3.有两种方法自定义Rule,编写java类和编写XPath。
4.PMD提供了多种IDE的插件来运行PMD。
参考文档:
PMD官方文档(http://pmd.sourceforge.net/)
OnJava上一篇文档(http://www.onjava.com/pub/a/onjava/2003/04/09/pmd_rules.html)
代码静态分析(http://blog.donews.com/foxgem/archive/2005/04/23/347444.aspx)
分享到:
相关推荐
PMD是一款强大的静态代码分析工具,主要用于检查Java源代码中的潜在问题。它通过构建源代码的抽象语法树(AST)来进行分析,帮助开发者发现并修复代码中的不良实践、冗余代码、可能的错误以及不遵循最佳实践的情况。...
这款工具通过对源代码进行静态分析,帮助开发者在代码执行之前找出可能存在的问题,从而减少程序的错误率,提高开发效率。 **PMD的工作原理** PMD通过解析Java源代码,构建抽象语法树(AST)来理解代码的结构。...
PMD是Java语言的静态分析工具,主要关注代码质量问题、潜在的bug和冗余代码。它可以检测出未使用的变量、过深的嵌套循环、复杂度过高的方法等问题,有助于提高代码的可读性和可维护性。PMD可以通过Ant、Maven、...
总结来说,PMD作为Java静态代码分析工具,通过对源代码进行深度检查,帮助开发者发现并修正潜在问题,从而提升代码质量和项目的整体健康度。了解和熟练使用PMD,是成为一名专业且负责任的Java开发者的必备技能之一。...
PMD 是一个强大的静态代码分析工具,用于检测 Java 代码中的潜在问题,它可以帮助开发者遵循最佳实践,提高代码质量和可维护性。通过使用 PMD 插件,开发人员可以自动发现可能的错误、无效的代码、低效的编程习惯...
PMD的主要功能是对Java代码进行静态分析,检测出潜在的问题,如未使用的变量、空的catch块、过度复杂的表达式等。此外,PMD还支持多种其他语言,包括JavaScript、PLSQL、Apache Velocity、XML和XS。通过这种方式,...
PMD(英文全称:Poor Man's Dynamic Code Analyzer)是一款开源的静态代码分析工具,主要用于检测Java源代码中可能存在的问题,如潜在的bug、不良的习惯以及可读性差的代码等。在软件开发过程中,使用PMD可以提升...
文章中提到了几种主流的Java静态分析工具:Checkstyle、FindBugs、PMD和Jtest。 #### Checkstyle Checkstyle专注于检查Java代码的格式问题,如缩进、空格、括号使用是否规范等。它确保代码遵循一定的编码规范,有...
PMD是一款强大的静态代码分析工具,主要用于检测Java源代码中的潜在问题。这款工具通过解析代码,寻找不符合最佳实践、可能导致错误或效率低下的编程习惯。它可以帮助开发者在早期阶段发现并修复代码中的不良习惯,...
PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否...与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说在不运行Java程序的情况下,报告错误。
PMD(Programmatic Maintenance and Development)是一种静态代码分析工具,旨在提高Java代码的质量和可维护性。下面是PMD的总结文档,涵盖了多个重要的知识点: 1. 避免不必要的布尔比较 在编写布尔表达式时,...
PMD是一个多用途的静态分析工具,它可以检测未使用的代码、空的try/catch/finally/switch语句、不必要的对象创建等多种类型的问题。它支持Java、JavaScript、*** Apex、PLSQL、Apache Velocity和XML等多种语言。PMD...
**PMD-IntelliJ 插件详解:利用PMD进行Java代码静态分析** PMD是业界广泛应用的一个开源工具,用于静态代码分析和检测。它能够帮助开发者发现潜在的编程错误、坏味道以及不必要的复杂性,从而提升代码质量和可维护...
总结起来,PMD是一个强大的静态代码分析工具,通过“pmd-bin-5.4.0.zip”提供的5.4.0版本,开发者可以便捷地对Java项目进行重复代码检查,从而提高代码质量和可维护性。了解并熟练使用PMD,对于提升团队的开发效率和...
PMD是一款强大的开源静态代码分析工具,主要用于Java语言。它的主要功能是对Java源代码进行分析,检测潜在的编程错误、不良习惯和可能的性能问题,从而帮助开发者提高代码质量,降低维护成本。PMD通过定义一系列规则...
PMD是一款强大的静态代码分析工具,主要用于检测Java源代码中的潜在问题、代码异味(Code Smell)和编程错误。PMD 4.2.5是该工具的一个版本,它旨在帮助开发者提升代码质量,预防可能的运行时错误,并遵循最佳编码...
总结来说,Idea Plugin PMD是提高Java代码质量的重要工具,它通过静态分析帮助开发者遵循最佳实践,减少潜在的问题。在IDEA中配置和使用PMD插件,可以有效地提升编程效率和代码质量。如果能访问提供的博客链接,将能...
1. **代码质量检测**:PMD的主要任务是对Java源代码进行静态分析,找出可能存在的问题,如未使用的变量、过长的方法、复杂的条件表达式等,这些都可能导致代码的可读性和维护性下降。 2. **自定义规则**:PMD允许...
PMD是一款开源的静态代码分析工具,主要用于Java语言。它能够帮助开发者发现并修复代码中的潜在问题,比如冗余代码、未使用的变量、空的catch块、复杂的表达式等。通过在开发环境中集成PMD插件,程序员可以实时检查...
PMD是一款开源的静态代码分析工具,用于检测Java源代码中的潜在问题,如未使用的变量、空的catch块、冗余的代码等。PMD插件是这款工具在Eclipse集成开发环境中的扩展,它允许开发者在编写代码的同时,实时检查代码...