关于 pmd
pmd 是面向开发者的多语言静态代码分析器,主要用于 Java 和 Apex。它提供内置规则、可扩展的自定义规则,并包含用于查找重复代码的 CPD。
主要功能
- 01检查常见代码缺陷
- 02支持多种编程语言
- 03提供 400 多条内置规则
- 04通过 Java 或 XPath 编写规则
- 05使用 CPD 检测重复代码
适用场景
- 01检查 Java 或 Apex 项目中的代码问题
- 02在代码库中查找重复片段
- 03为项目编写自定义分析规则
MCP 相关
输入仅将其描述为静态代码分析器,未说明 MCP 功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 要分析的源文件或目录路径 |
| excludes | array | 否 | 要从分析中排除的文件模式 |
| rulesets | array | 否 | 要应用的规则集(例如,["rulesets/java/quickstart.xml"])。默认值为 quickstart。 |
| language_version | string | 否 | 语言版本(例如,"java-21"、"ecmascript-ES2022") |
| minimum_priority | number | 否 | 要报告的最低优先级(1=最高,5=最低)。默认值:全部 |
详细介绍
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。 PMD 支持 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 下载最新的二进制 zip 文件, 并将其解压到合适的位置。
执行 bin/pmd check 或 bin\pmd.bat check。
另请参阅快速入门
演示:
下面演示了 PMD 如何分析 openjdk:

PMD 还提供 Maven 和 Gradle 插件,以及适用于各种 IDE 的插件。 请参阅工具 / 集成
ℹ️ 如何获取支持?
- 我该怎么做?——在 StackOverflow 或 讨论区提问。
- 我遇到了这个错误,为什么?——在 StackOverflow 或 讨论区提问。
- 我遇到了这个错误,并且确定这是一个 Bug——提交一个 问题。
- 我有一个想法/请求/问题——创建一个新的讨论。
- 我有一个简单的问题——在我们的 Gitter 聊天室 或 Gurubase 上的 PMD Guru提问。
- 文档在哪里?——https://docs.pmd-code.org/latest/
🤝️ 参与贡献
欢迎提交拉取请求。对于重大更改,请先提交问题,讨论你希望进行的更改。
我们最新的 PMD 源代码可在 GitHub 上找到。欢迎 Fork!
详情请参阅如何为 PMD 贡献代码。
规则设计器在 pmd/pmd-designer 中开发。 开发者文档请参阅其 README。
💵️ 资金贡献者
成为资金贡献者,帮助我们维持社区发展。参与贡献
✨️ 贡献者
本项目遵循 all-contributors 规范。 欢迎任何形式的贡献!
完整列表请参阅鸣谢。
📝️ 许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。