pmd/pmd
GitHub: pmd/pmd
一款开源的可扩展多语言静态代码分析器,专注于发现编程缺陷、提升代码质量并检测重复代码。
Stars: 5333 | Forks: 1558
# PMD - 源代码分析器

[](https://app.gitter.im/#/room/#pmd_pmd:gitter.im?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://github.com/pmd/pmd/actions/workflows/build-snapshot.yml)
[](https://maven-badges.herokuapp.com/maven-central/net.sourceforge.pmd/pmd)
[](https://github.com/jvm-repo-rebuild/reproducible-central/tree/master/content/net/sourceforge/pmd#readme)
[](https://coveralls.io/github/pmd/pmd?branch=main)
[](https://app.codacy.com/organizations/gh/pmd/dashboard)
[](code_of_conduct.md)
[](https://docs.pmd-code.org/latest/)
[](https://gurubase.io/g/pmd)
[](https://hub.docker.com/r/pmdcode/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。
## 🚀️ 安装与使用
从 [releases](https://github.com/pmd/pmd/releases/latest) 下载最新的二进制 zip 文件并将其解压缩到某处。
执行 `bin/pmd check` 或 `bin\pmd.bat check`。
另请参阅 [Getting Started](https://docs.pmd-code.org/latest/pmd_userdocs_installation.html)
**演示:**
这展示了 PMD 如何分析 [openjdk](https://github.com/openjdk/jdk):

还有适用于 Maven 和 Gradle 的插件,以及适用于各种 IDE 的插件。
参见 [Tools / Integrations](https://docs.pmd-code.org/latest/pmd_userdocs_tools.html)
## ℹ️ 如何获取支持?
* 我该怎么做?—— 在 [StackOverflow](https://stackoverflow.com/questions/tagged/pmd) 或 [discussions](https://github.com/pmd/pmd/discussions) 上提问。
* 我遇到了这个错误,为什么?—— 在 [StackOverflow](https://stackoverflow.com/questions/tagged/pmd) 或 [discussions](https://github.com/pmd/pmd/discussions) 上提问。
* 我遇到了这个错误,而且我确定这是一个 Bug——提交一个 [issue](https://github.com/pmd/pmd/issues)。
* 我有一个想法/请求/问题——创建一个新的 [discussion](https://github.com/pmd/pmd/discussions)。
* 我有一个简单的问题——在我们的 [Gitter room](https://app.gitter.im/#/room/#pmd_pmd:gitter.im) 或我们的 [PMD Guru at Gurubase](https://gurubase.io/g/pmd) 中提问。
* 你们的文档在哪里?——
## 🤝️ 贡献
欢迎提交 Pull Request。对于重大更改,请先开一个 issue 来讨论您想要更改的内容。
我们最新的 PMD 源代码可以在 [GitHub](https://github.com/pmd/pmd) 上找到。Fork 我们吧!
有关详细信息,请参阅 [How to contribute to PMD](https://docs.pmd-code.org/latest/pmd_devdocs_contributing.html)。
规则设计器在 [pmd/pmd-designer](https://github.com/pmd/pmd-designer) 开发。
请参阅 [its README](https://github.com/pmd/pmd-designer#contributing) 获取开发者文档。
## ✨️ 贡献者
本项目遵循 [all-contributors](https://github.com/all-contributors/all-contributors) 规范。
欢迎任何形式的贡献!
完整列表请参见 [credits](docs/pages/pmd/projectdocs/credits.md)。
## 📝️ 许可证
[BSD Style](LICENSE)
标签:AI, Apache Flink, Apex, AST, CI/CD, Clean Code, CVE防护, DevSecOps, ETL, Gradle集成, Java, JavaCC, JS文件枚举, Kafka, Maven集成, pip安装, PMD, SAST, SOC Prime, SonarQube插件, Web界面, 上游代理, 事件富化, 二进制发布, 二进制文件分析, 云计算, 代码规范检查, 代码质量, 函数图谱, 反模式检测, 可视化调试, 后台面板检测, 域名枚举, 域名枚举, 域名枚举, 域名枚举, 域名枚举, 域名枚举, 域名枚举, 多语言支持, 安全专业人员, 安全扫描, 安全测试框架, 实时流处理, 带宽管理, 开发工具, 开源工具, 数据湖, 数据管道, 时序注入, 机器学习, 漏洞检测, 盲注攻击, 网络攻击检测, 自动化代码审查, 自动化安全运营, 规则引擎, 请求拦截, 资源监视器, 软件工程, 错误基检测, 静态代码分析