PMD是一个可扩展的多语言静态代码分析器。它可以发现常见的编程缺陷,例如未使用的变量、空的 catch 块、不必要的对象创建等。它主要涉及Java 和 Apex ,但支持其他 16 种语言。它带有400 多个内置规则。它可以通过自定义规则进行扩展。它使用 JavaCC 和 Antlr 将源文件解析为抽象语法树 (AST),并针对它们运行规则以查找违规行为。规则可以用 Java 或使用 XPath 查询编写。
目前,PMD 支持 Java、JavaScript、Salesforce.com Apex 和 Visualforce、Kotlin、Swift、Modelica、PLSQL、Apache Velocity、JSP、WSDL、Maven POM、HTML、XML 和 XSL。支持 Scala,但目前没有可用的 Scala 规则。
此外,它还包括CPD (复制粘贴检测器)。 CPD 查找 Coco、C/C++、C#、Dart、Fortran、Gherkin、Go、Groovy、HTML、Java、JavaScript、JSP、Julia、Kotlin、Lua、Matlab、Modelica、Objective-C、Perl、PHP、PLSQL 中的重复代码、Python、Ruby、Salesforce.com Apex 和 Visualforce、Scala、Swift、T-SQL、Typescript、Apache Velocity、WSDL、XML 和 XSL。
从版本中下载最新的二进制 zip 并将其解压到某个位置。
执行bin/pmd check
或binpmd.bat check
。
另请参阅入门
演示:
这显示了 PMD 如何分析 openjdk:
有适用于 Maven 和 Gradle 以及各种 IDE 的插件。查看工具/集成
欢迎请求请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
我们最新的 PMD 源可以在 GitHub 上找到。叉我们!
规则设计器是在 pmd/pmd-designer 上开发的。请参阅其 README 以获取开发人员文档。
成为财务贡献者并帮助我们维持我们的社区。贡献
该项目遵循所有贡献者规范。欢迎任何形式的贡献!
完整列表请参见制作人员名单。
BSD风格