前言
- IDEA版本:2025.2
- JDK版本:21
- Maven:3.9.6
- PWD:2.0.9(IDEA市场插件)
- PWD:3.28.0(Maven版本)
文档编写日期:2025-12-01,主要为IDEA或项目集成PWD使用,也可以按照官网进行下载后脚本执行,不涉及规则更改等更深度使用。
一、PWD简介
PMD 是一款可扩展的多语言静态代码分析器。它可以查找常见的编程缺陷,例如未使用的变量、空的 catch 块、不必要的对象创建等等。它主要针对 Java 和 Apex,但也支持其他 16 种语言。PMD 内置 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、Rust、Salesforce.com Apex 和 Visualforce、Scala、Swift、T-SQL、Typescript、Apache Velocity、WSDL、XML 和 XSL 中查找重复代码。
二、IDEA使用(PWD插件使用)
- 在IDEA插件市场,搜索[PMD Plugin],出现PWD插件后安装
-
在IDEA中,右击src或需要检测的代码目录,选择[PWD Run]选择一种或全部类型进行检测,检测结果现在控制台。
IDEA中使用PWD插件检测
三、项目集成PWD使用
1. pom集成pwd
以下在SpringBoot项目中集成,SpringBoot版本为3.3.0。集成后,点击maven进行update,右侧出现pwd的插件工具。
另外,插件中集成jxr,是为了在运行pwd之前,执行jxr,生成交叉引用的html,如此,再使用pwd生成html后,点击问题时,可以直接跳转到指定代码行。具体见:PMD (Java Source Code Analyzer)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-pmd-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.28.0</version>
<configuration>
<rulesets>
<ruleset>/rulesets/java/quickstart.xml</ruleset>
</rulesets>
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-jxr-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.6.0</version>
</plugin>
</plugins>
</build>
2. 执行jxr生成交叉引用文件

所有java代码会以html的形式存在于xref目录下。
3. 执行pwd生成报告
1)pwd命令执行步骤

2)HTML报告内容

3)XML报告内容

四、脚本直接使用
1. 下载并解压缩使用
以下使用PWD-7.19.0使用说明。
2.脚本使用说明
# 规则
pmd.bat check -d 源代码路径 -f xml(结果输出格式: xml/html) -r 结果保存所在目录及名称 -R rulesets/java/quickstart.xml
#示例·打印在控制台
pmd.bat check -d D:\tj4a-jdk21\src -f text -R rulesets/java/quickstart.xml
#示例·输出到HTML
pmd.bat check -d D:\tj4a-jdk21\src -f html -r pwd-20251201.html -R rulesets/java/quickstart.xml
#示例·输出到XML
pmd.bat check -d D:\tj4a-jdk21\src -f xml -r pwd-20251201.xml -R rulesets/java/quickstart.xml
参考文档
附录A
1. IDEA插件市场中PWD

