PMD:Java源代码扫描器

Posted 技术专家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PMD:Java源代码扫描器相关的知识,希望对你有一定的参考价值。

PMD是一个开源代码分析器。可以查找常见编程缺陷,比如未使用的变量、空catch代码块、不必要的对象创建等。支持Java、javascript、PLSQL、Apache Velocity、XML、XSL。

技术分享

除此之外,PMD还包含CPD(拷贝、粘贴检测器)。CPD可以发现重复的Java、C、C++、C#、php、Ruby、Fortran、JavaScript、PLSQL、Apache Velocity、Ruby、Scala、Objective C、Matlab、Python、Go。

主要功能

与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,例如:

 

  • 潜在的bug:空的try/catch/finally/switch语句
  • 未使用的代码:未使用的局部变量、参数、私有方法等
  • 可选的代码:String/StringBuffer的滥用
  • 复杂的表达式:不必须的if语句、可以使用while循环完成的for循环
  • 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs
  • 循环体创建新对象:尽量不要再for或while循环体内实例化一个新对象
  • 资源关闭:Connect,Result,Statement等使用之后确保关闭掉

此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket对象的操作。

工作原理

PMD的核心是JavaCC解析器生成器。PMD结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)。

安装及PMD插件

PMD为各种IDE提供了安装插件:

文档

官方文档介绍了从下载、安装、相关书籍、最佳实践、自定义规则等详细信息。

官方网站:https://pmd.github.io/
开源地址:https://github.com/pmd


以上是关于PMD:Java源代码扫描器的主要内容,如果未能解决你的问题,请参考以下文章

代码静态分析工具--PMD,Findbugs,CheckStyle

PMD-Java 代码检查工具对 error 和 warning 的配置

Java代码PMD抱怨Cyclomatic Complexity,20

Eclipse-Java代码规范和质量检查插件-PMD

从静态代码扫描引擎PMD源码学习-多线程任务模型和File过滤设计

用于 C/C++/C# 的免费静态代码扫描器 [关闭]