PMD是一个可扩展的多语言静态代码分析工具,主要用于检测Java和Apex等语言的常见编程缺陷,支持16种语言和400多个内置规则,并包含重复代码检测功能。
2分
7.0K

什么是PMD?

PMD是一款强大的静态代码分析工具,它通过扫描源代码来发现潜在的问题和不良实践,而无需实际运行程序。它就像一位经验丰富的代码审查员,能够自动识别代码中的各种问题,帮助开发者编写更高质量、更易维护的代码。

如何使用PMD?

PMD提供多种使用方式:可以直接下载二进制包通过命令行运行,也可以集成到Maven、Gradle等构建工具中,还可以作为插件安装到各种IDE中。基本使用流程包括:下载安装、配置规则、运行分析、查看报告。

适用场景

PMD特别适合以下场景: 1. 团队代码质量保障 2. 代码审查自动化 3. 编码规范强制执行 4. 技术债务识别 5. 新人代码质量培训 6. 持续集成流程中的质量门禁

主要功能

多语言支持
支持17种编程语言,包括Java、JavaScript、Kotlin、Swift、Python、Go等,满足不同技术栈的需求。
丰富的规则库
内置400多个代码检查规则,涵盖代码质量、性能、安全、最佳实践等多个方面。
代码重复检测(CPD)
内置Copy-Paste Detector,能够自动识别代码中的重复片段,帮助减少代码冗余。
可扩展性
支持自定义规则开发,可以通过Java编写或使用XPath查询来创建特定需求的检查规则。
多种集成方式
提供命令行工具、构建工具插件、IDE插件等多种使用方式,适应不同的开发工作流。
开源免费
完全开源免费,采用BSD许可证,可以自由使用、修改和分发。
优势
支持多种编程语言,适用范围广
规则丰富且持续更新
开源免费,社区活跃
易于集成到现有开发流程
提供详细的错误报告和修复建议
支持自定义规则扩展
局限性
对某些语言的支持可能不如专门工具全面
可能需要一定的学习成本来理解所有规则
误报率需要根据项目实际情况调整
大型项目分析可能需要较长时间

如何使用

下载安装
从GitHub Releases页面下载最新版本的二进制包,解压到本地目录。
基本使用
使用命令行工具分析源代码目录,指定要使用的规则集。
代码重复检测
使用CPD功能检测代码中的重复片段。
集成到构建工具
在Maven或Gradle配置中添加PMD插件,实现自动化代码检查。

使用案例

Java项目代码质量检查
对一个Java Web项目进行全面的代码质量检查,包括代码规范、性能问题、潜在bug等。
JavaScript代码重复检测
检查前端JavaScript项目中是否存在重复的代码片段,优化代码结构。
团队编码规范检查
使用自定义规则集检查团队是否遵守特定的编码规范。

常见问题

PMD和SonarQube有什么区别?
如何减少误报?
PMD支持哪些IDE?
如何自定义规则?
PMD分析大型项目会很慢吗?

相关资源

官方文档
完整的PMD使用文档和API参考
GitHub仓库
PMD源代码和问题追踪
在线讨论区
用户讨论和技术交流
Stack Overflow标签
技术问题问答
PMD Guru
AI助手帮助解决PMD相关问题
Docker镜像
官方Docker镜像

安装

复制以下命令到你的Client进行配置
注意:您的密钥属于敏感信息,请勿与任何人分享。

替代品

V
Vestige
Vestige是一个基于认知科学的AI记忆引擎,通过实现预测误差门控、FSRS-6间隔重复、记忆梦境等29个神经科学模块,为AI提供长期记忆能力。包含3D可视化仪表板和21个MCP工具,完全本地运行,无需云端。
Rust
4.5K
4.5分
M
Moltbrain
MoltBrain是一个为OpenClaw、MoltBook和Claude Code设计的长期记忆层插件,能够自动学习和回忆项目上下文,提供智能搜索、观察记录、分析统计和持久化存储功能。
TypeScript
4.1K
4.5分
B
Bm.md
一个功能丰富的Markdown排版工具,支持多种样式主题和平台适配,提供实时编辑预览、图片导出和API集成能力
TypeScript
4.4K
5分
S
Security Detections MCP
Security Detections MCP 是一个基于Model Context Protocol的服务器,允许LLM查询统一的安全检测规则数据库,涵盖Sigma、Splunk ESCU、Elastic和KQL格式。最新3.0版本升级为自主检测工程平台,可自动从威胁情报中提取TTPs、分析覆盖差距、生成SIEM原生格式检测规则、运行测试并验证。项目包含71+工具、11个预构建工作流提示和知识图谱系统,支持多SIEM平台。
TypeScript
6.0K
4分
P
Paperbanana
PaperBanana是一个自动化生成学术图表和统计图的智能框架,支持从文本描述生成高质量的论文插图,采用多智能体管道和迭代优化,提供CLI、Python API和MCP服务器等多种使用方式。
Python
7.7K
5分
B
Better Icons
一个提供超过20万图标搜索和检索的MCP服务器和CLI工具,支持150多个图标库,帮助AI助手和开发者快速获取和使用图标。
TypeScript
6.7K
4.5分
A
Assistant Ui
assistant-ui是一个开源TypeScript/React库,用于快速构建生产级AI聊天界面,提供可组合的UI组件、流式响应、无障碍访问等功能,支持多种AI后端和模型。
TypeScript
7.3K
5分
A
Apify MCP Server
Apify MCP服务器是一个基于模型上下文协议(MCP)的工具,允许AI助手通过数千个现成的爬虫、抓取器和自动化工具(Apify Actor)从社交媒体、搜索引擎、电商等网站提取数据。它支持OAuth和Skyfire代理支付,可通过HTTPS端点或本地stdio方式集成到Claude、VS Code等MCP客户端中。
TypeScript
7.5K
5分
D
Duckduckgo MCP Server
已认证
DuckDuckGo搜索MCP服务器,为Claude等LLM提供网页搜索和内容抓取服务
Python
85.7K
4.3分
F
Figma Context MCP
Framelink Figma MCP Server是一个为AI编程工具(如Cursor)提供Figma设计数据访问的服务器,通过简化Figma API响应,帮助AI更准确地实现设计到代码的一键转换。
TypeScript
75.8K
4.5分
F
Firecrawl MCP Server
Firecrawl MCP Server是一个集成Firecrawl网页抓取能力的模型上下文协议服务器,提供丰富的网页抓取、搜索和内容提取功能。
TypeScript
150.9K
5分
B
Baidu Map
已认证
百度地图MCP Server是国内首个兼容MCP协议的地图服务,提供地理编码、路线规划等10个标准化API接口,支持Python和Typescript快速接入,赋能智能体实现地图相关功能。
Python
50.1K
4.5分
E
Exa Web Search
已认证
Exa MCP Server是一个为AI助手(如Claude)提供网络搜索功能的服务器,通过Exa AI搜索API实现实时、安全的网络信息获取。
TypeScript
57.3K
5分
C
Context7
Context7 MCP是一个为AI编程助手提供实时、版本特定文档和代码示例的服务,通过Model Context Protocol直接集成到提示中,解决LLM使用过时信息的问题。
TypeScript
106.0K
4.7分
M
Minimax MCP Server
MiniMax Model Context Protocol (MCP) 是一个官方服务器,支持与强大的文本转语音、视频/图像生成API交互,适用于多种客户端工具如Claude Desktop、Cursor等。
Python
63.6K
4.8分
E
Edgeone Pages MCP Server
EdgeOne Pages MCP是一个通过MCP协议快速部署HTML内容到EdgeOne Pages并获取公开URL的服务
TypeScript
32.0K
4.8分
AIBase
智启未来,您的人工智能解决方案智库