README
🚀 PMD - 源代码分析器
PMD 是一个可扩展的多语言静态代码分析器。它能找出常见的编程缺陷,如未使用的变量、空的 catch 块、不必要的对象创建等。它主要关注 Java 和 Apex,但 支持其他 16 种语言。它自带 400 多个内置规则,还可以通过自定义规则进行扩展。它使用 JavaCC 和 Antlr 将源文件解析为抽象语法树 (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 —— 提交一个 问题。
- 我有一个想法/请求/问题 —— 创建一个新的 讨论。
- 我有一个快速问题 —— 在我们的 Gitter 聊天室 或 Gurubase 上的 PMD 专家 处提问。
- 你们的文档在哪里?—— https://docs.pmd-code.org/latest/
🤝 贡献代码
欢迎提交拉取请求。对于重大更改,请先打开一个问题,讨论你想要更改的内容。
我们的最新 PMD 源代码可以在 GitHub 上找到。快来 Fork 我们吧!
有关详细信息,请参阅 如何为 PMD 做贡献。
规则设计器在 pmd/pmd-designer 中开发。 请参阅 其 README 以获取开发人员文档。
💵 财务贡献者
成为财务贡献者,帮助我们维持社区的发展。贡献
✨ 贡献者
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!
完整列表请参阅 致谢。
微信扫一扫