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

相关推荐
会说法语的猪1 小时前
springboot实现图片上传、下载功能
java·spring boot·后端
m0_748239831 小时前
基于web的音乐网站(Java+SpringBoot+Mysql)
java·前端·spring boot
凡人的AI工具箱1 小时前
每天40分玩转Django:实操多语言博客
人工智能·后端·python·django·sqlite
Cachel wood2 小时前
Django REST framework (DRF)中的api_view和APIView权限控制
javascript·vue.js·后端·python·ui·django·前端框架
m0_748234082 小时前
Spring Boot教程之三十一:入门 Web
前端·spring boot·后端
想成为高手4992 小时前
国产之光--仓颉编程语言的实战案例分析
后端
编码浪子3 小时前
构建一个rust生产应用读书笔记7-确认邮件2
开发语言·后端·rust
昙鱼3 小时前
springboot创建web项目
java·前端·spring boot·后端·spring·maven
天之涯上上3 小时前
JAVA开发 在 Spring Boot 中集成 Swagger
java·开发语言·spring boot
白宇横流学长3 小时前
基于SpringBoot的停车场管理系统设计与实现【源码+文档+部署讲解】
java·spring boot·后端