
pmd pmd_releases/7.27.0
一个可扩展的多语言静态代码分析器。
PMD - 源代码分析器

PMD 是一个可扩展的多语言静态代码分析器。它能发现常见的编程缺陷,例如未使用的变量、空的 catch 块、不必要的对象创建等。它主要专注于 Java 和 Apex,但 支持其他 16 种语言。它内置了 400 多条规则。可以通过自定义规则进行扩展。它使用 JavaCC 和 Antlr 解析源文件为抽象语法树(AST),并针对这些 AST 运行规则以发现违规。规则可以用 Java 或 XPath 查询编写。
目前,PMD 支持 Java、JavaScript、Salesforce.com Apex 和 Visualforce、Kotlin、Swift、Modelica、PL/SQL、Apache Velocity、JSP、WSDL、Maven POM、HTML、XML 和 XSL。Scala 也受支持,但目前没有可用的 Scala 规则。
此外,它还包含 CPD,即复制粘贴检测器。CPD 能发现 Coco、C/C++、C#、CSS、Dart、Fortran、Gherkin、Go、Groovy、HTML、Java、JavaScript、JSP、Julia、Kotlin、Lua、Matlab、Modelica、Objective-C、Perl、PHP、PL/SQL、Python、Ruby、Salesforce.com Apex 和 Visualforce、Scala、Swift、T-SQL、TypeScript、Apache Velocity、WSDL、XML 和 XSL 中的重复代码。
🚀️ 安装与使用
从 发布页面 下载最新的二进制 zip 包并解压到某个位置。
执行 bin/pmd check 或 bin\pmd.bat check。
另请参阅 入门指南
演示:
以下展示了 PMD 如何分析 openjdk:

还有适用于 Maven 和 Gradle 以及各种 IDE 的插件。 请参阅 工具/集成
ℹ️ 如何获取支持?
- 我该怎么做?——在 StackOverflow 或 讨论区 提问。
- 我遇到了这个错误,为什么?——在 StackOverflow 或 讨论区 提问。
- 我遇到了这个错误,而且我确定这是一个 bug——提交一个 issue。
- 我有一个想法/请求/问题——创建一个新的 讨论。
- 我有一个快速问题——在我们的 Gitter 房间 或 Gurubase 上的 PMD Guru 提问。
- 你们的文档在哪里?——https://docs.pmd-code.org/latest/
🤝️ 贡献
欢迎提交 Pull Request。对于重大更改,请先打开 issue 讨论您想要更改的内容。
PMD 的最新源代码可在 GitHub 上找到。Fork 我们吧!
有关详细信息,请参阅 如何为 PMD 做贡献。
规则设计器在 pmd/pmd-designer 上开发。 请参阅 其 README 了解开发者文档。
💵️ 财务贡献者
成为财务贡献者,帮助我们维持社区。 贡献
✨️ 贡献者
本项目遵循 all-contributors 规范。 欢迎各种形式的贡献!
完整列表请参见 致谢。