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.引用

相关推荐
程序员爱钓鱼20 分钟前
用Python开发“跳一跳”小游戏——从零到可玩
后端·python·面试
程序员爱钓鱼20 分钟前
Python 源码打包成.whl文件的完整指南
后端·python·面试
IT_陈寒23 分钟前
Vite 3.0 实战:5个优化技巧让你的开发效率提升50%
前端·人工智能·后端
.生产的驴26 分钟前
DockerCompoe 部署注册中心Nacos 一键部署 单机+Mysql8
java·linux·运维·spring boot·缓存·docker·doc
、BeYourself34 分钟前
Spring AI ChatClient 响应处理
后端·ai·springai
222you1 小时前
前后端分离项目在云服务器上的部署(Spring Boot + Vue)
运维·服务器·spring boot
计算机毕设指导61 小时前
基于微信小程序图像识别的智能垃圾分类系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·分类·maven
若丶相见1 小时前
Java对比Python 3.10+ 全栈语法与底层进阶百科全书
后端
奕成则成1 小时前
Django使用
后端·python·django
superman超哥1 小时前
Rust impl 块的组织方式:模块化设计的艺术
开发语言·后端·rust·模块化设计·rust impl块·impl块