静态代码分析工具-PWD使用实践

前言

  • 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插件使用)

  1. 在IDEA插件市场,搜索[PMD Plugin],出现PWD插件后安装
  2. 在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生成交叉引用文件

jxr执行

所有java代码会以html的形式存在于xref目录下。

3. 执行pwd生成报告

1)pwd命令执行步骤

pwd执行

2)HTML报告内容


PWD生成HTML报告(部分内容)

3)XML报告内容

PWD生成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

IDEA插件市场中PWD(输入[PMD Plugin]进行检索)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容