Spring Boot集成pmd插件快速入门Demo

1.什么是pmd插件?

PMD 插件允许您在项目的源代码上自动运行PMD代码分析工具,并生成带有其结果的站点报告。它还支持与 PMD 一起分发的单独的复制/粘贴检测器工具(或 CPD)。 此版本的 Maven PMD 插件使用 PMD 6.42.0 并且需要 Java 8。有关更多信息,请参阅在运行时升级 PMD 。 该插件接受可用于自定义 PMD 工具执行的配置参数。

目标概述

这个插件有以下目标:

  • pmd:pmd根据插件中的规则集和配置集创建 PMD 站点报告。除了站点报告之外,它还可以生成以下任何格式的 pmd 输出文件:xml、csv 或 txt。

  • pmd:aggregate-pmd根据插件中设置的规则集和配置在聚合器项目中创建 PMD 站点报告。除了站点报告之外,它还可以生成以下任何格式的 pmd 输出文件:xml、csv 或 txt。

  • pmd:aggregate-pmd-no-fork在聚合器项目中创建 PMD 站点报告,而无需再次分叉

    测试编译

    阶段。

  • pmd:cpd为​​ PMD 的复制/粘贴检测器 (CPD) 工具创建报告。它还可以生成以下任何格式的 cpd 结果文件:xml、csv 或 txt。

  • pmd:aggregate-cpd在聚合器项目中为 PMD 的复制/粘贴检测器 (CPD) 工具创建报告。它还可以生成以下任何格式的 cpd 结果文件:xml、csv 或 txt。

  • 如果源代码中存在任何 PMD 违规,则pmd:check会导致构建失败。此目标在执行自身之前自动调用

    pmd:pmd 。

  • 如果源代码中存在任何 PMD 违规,则pmd:aggregate-pmd-check会使聚合器项目中的构建失败。此目标在执行自身之前自动调用

    pmd:aggregate-pmd 。

  • 如果源代码中存在任何 CPD 违规,则pmd:cpd-check会使构建失败。此目标在执行自身之前自动调用

    pmd:cpd 。

  • 如果源代码中存在任何 CPD 违规,则pmd:aggregate-cpd-check会使聚合器项目中的构建失败。此目标在执行自身之前自动调用

    pmd:aggregate-cpd 。

2.代码工程

实验目的

使用pmd检查项目中的代码是否违规

第一种方法:maven插件集成

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>pmd</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <pmd.version>3.15.0</pmd.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>
    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${pmd.version}</version>
                <configuration>
                    <sourceEncoding>utf-8</sourceEncoding>
                    <minimumTokens>100</minimumTokens>
                    <targetJdk>${maven.compiler.target}</targetJdk>
                    <excludes>
                        <!--<exclude>**/*Bean.java</exclude>-->
                        <!--<exclude>**/generated/*.java</exclude>-->
                    </excludes>
                    <excludeRoots>
                        <!--<excludeRoot>target/generated-sources/stubs</excludeRoot>-->
                    </excludeRoots>
                    <rulesets>
                        <ruleset>rulesets/java/quickstart.xml</ruleset>
                    </rulesets>
                    <outputDirectory>target/pmd-reports</outputDirectory>
                </configuration>

                <!--在clean后自动执行check-->
                <!--<executions>-->
                <!--<execution>-->
                <!--<id>pmd-check</id>-->
                <!--<phase>clean</phase>-->
                <!--<goals>-->
                <!--<goal>check</goal>-->
                <!--</goals>-->
                <!--</execution>-->
                <!--</executions>-->
            </plugin>
        </plugins>
    </build>
</project>

第二种方法:ideal插件

安装

使用

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

3.测试

运行 mvn pmd:check ,target/pmd-reports/下会生成检测报告

4.引用

相关推荐
基哥的奋斗历程32 分钟前
springboot整合Camunda实现业务
java·spring boot·dubbo
techlead_krischang44 分钟前
中国软件评测中心最新报告:文心大模型技术、产品、应用全面领跑
后端·go
yjjpp23011 小时前
Django REST Framework(四)DRF APIVIEW
后端·python·django
concisedistinct1 小时前
大数据开发语言 Scala(四):面向对象编程
大数据·开发语言·后端·scala·编程语言·面向对象
hummhumm1 小时前
数据结构第08小节:双端队列
java·数据结构·spring boot·spring·java-ee·maven·intellij-idea
纸月1 小时前
短信服务(二):实现某短信服务商崩溃后自动切换并重试
后端·go
fenghuo_yuanma3 小时前
如何在IIS6,7中部署ASP.NET网站
后端·asp.net·网站部署
地瓜伯伯3 小时前
HandlerMethodArgumentResolver :深入spring mvc参数解析机制
大数据·人工智能·spring boot·spring·语言模型
亿只王菜菜4 小时前
WebRtc实现1V1音视频通话
spring boot·websocket·webrtc·实时音视频