Apache Maven PMD Plugin

来源:互联网 发布:清空数据库sql语句 编辑:程序博客网 时间:2024/04/29 22:28

使用简介


PMD插件允许自动部署,在代码项目中用PMD工具进行源代码分析,会生成一个检查结果的站点报告。PMD也支持独立的复制/粘贴探测器(CPD)。

插件接受配置参数,可以用于定义PMD的执行工具。


四个Maven命令的使用


pmd:pmd会基于规则集和配置的插件创建一个网站报告,也可以生成一个支持xml、csv、txt格式的输出文件报告。

pmd:cpd会为复制/粘贴探测器(CPD)生成一个报告,同样也可以生成一个支持xml、csv、txt格式的输出文件报告。

pmd:check如果生成的PMD报告没有构建失败并且是空的,它会在pmd:pmd命令执行时默认执行。

pmd:cpd-check如果生成的cpd报告没有构建失败并且是空的,它会在pmd:cpd命令执行时默认执行。


在Maven中部署


PMD插件通过PMD代码分析工具生成PMD和CPD报告的。在Maven项目的POM文件的<reporting>部分插入下面部分,它会通过参数和默认的规则集在项目的网站上生成一份报告。

在Maven项目的POM文件的reporting部分配置PMD插件

<pre name="code" class="html"><project>  ...  <reporting>    <plugins>      <plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-pmd-plugin</artifactId>         <version>3.1</version>      </plugin>    </plugins>  </reporting>  ...</project>

也可以通过在Maven项目的POM文件的<build>部分插入下面部分,然后执行PMD插件生成相同的报告。

在Maven项目的POM文件的<build>部分配置PMD插件

 <project>  ...  <build>    <plugins>                 <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-pmd-plugin</artifactId>                  <version>3.1</version>                 </plugin>     </plugins>  </build>  ...</project>

在Maven的POM文件中的参数设置


PMD和CPD可以通过相同的参数配置,在项目网站上生成PMD和CPD的报告。如果启用linkXRef这个参数,报告会直接链接到交叉引用来源。
如果来源没有编码类型,你也可以通过sourceEncoding参数设置来告诉Maven当读取到JAVA源码时使用该编码类型。当然还可以通过minimumTokens参数设置CPD每次扫描时最小的代码量。

在Maven项目的POM文件的reporting部分配置PMD插件

<pre name="code" class="html"> <project>  ...  <reporting>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-pmd-plugin</artifactId>        <version>3.1</version>        <configuration>          <linkXref>true</linkXref>          <sourceEncoding>utf-8</sourceEncoding>          <minimumTokens>100</minimumTokens>          <targetJdk>1.5</targetJdk>          <excludes>            <exclude>**/*Bean.java</exclude>            <exclude>**/generated/*.java</exclude>          </excludes>          <excludeRoots>            <excludeRoot>target/generated-sources/stubs</excludeRoot>          </excludeRoots>        </configuration>      </plugin>    </plugins>  </reporting>  ...</project>

生成报告类型的选择


如果仅仅只想生成一种报告,可以通过在POM文件中设置reportSets参数作为插件的默认设置。COPY下面<reportSets>部分元素到你的POM文件中,并删除其中一个你不想生成的<report>报告类型。

在Maven项目的POM文件的reporting部分配置PMD插件

<project>  ...  <reporting>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-pmd-plugin</artifactId>        <version>3.1</version>        <reportSets>          <reportSet>            <reports>              <report>pmd</report>              <report>cpd</report>            </reports>          </reportSet>        </reportSets>      </plugin>    </plugins>  </reporting>  ...</project>

配置文件中的参数的引用配置


如果需要经常同步配置maven-compiler-plugin的各种参数,最好的办法就是通过设置引用配置文件的相关内容的方式来达到目的,这样就会避免繁复的修改而引起错误,仅仅只需要修改配置文件里的内容。

pom文件中的各种参数引用配置

<project>  ...  <build>    <plugins>      <plugin>        <artifactId>maven-compiler-plugin</artifactId>        <version>2.0.2</version>        <configuration>          <source>${compileSource}</source>        </configuration>      </plugin>    </plugins>  </build>  ...  <reporting>    <plugins>      <plugin>        <artifactId>maven-pmd-plugin</artifactId>        <version>3.1</version>        <configuration>          <targetJdk>${compileSource}</targetJdk>        </configuration>      </plugin>    </plugins>  </reporting>  ...  <properties>    <compileSource>1.5</compileSource>  </properties>  ...</project>


规则的配置


PMD插件默认使用三个规则集: basic.xmlunusedcode.xml 和imports.xml。这些规则是绑定在PMD代码分析工具上的,你可以像下面操作一样来配置规则。代码规则可以通过项目路径、链接地址、以及本地路径的方式进行配置。,默认的规则集以为是绑定在PMD上的,不需要提供具体的绝对路径。而如果是自定义的规则,则需要改规则文件的具体的绝对路径。

pom文件中规则的三种设置方式

<project>  ...  <reporting>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-pmd-plugin</artifactId>        <version>3.1</version>        <configuration>          <rulesets>            <!-- 与PMD绑定的两条规则设置 -->            <ruleset>/rulesets/java/braces.xml</ruleset>            <ruleset>/rulesets/java/naming.xml</ruleset>            <!-- 本地自定义规则的设置-->            <ruleset>d:\rulesets\strings.xml</ruleset>            <!-- 网络自定义规则设置 -->            <ruleset>http://localhost/design.xml</ruleset>          </rulesets>        </configuration>      </plugin>    </plugins>  </reporting>  ...</project>

违反规则行为的检查


如果发现任何的代码错误而导致pmd:check和pmd:cpd-check构建PMD报告或者CPD报告失败,可以通过以下操作来强制执行检查规则。通过配置verbose参数,可以将违反规则的行为在构建时被显示出来。

<pre name="code" class="html"><project>  ...  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-pmd-plugin</artifactId>        <version>3.1</version>        <executions>          <execution>            <goals>              <goal>check</goal>              <goal>cpd-check</goal>            </goals>          </execution>        </executions>      </plugin>    </plugins>  </build>  ...</project>

参考文档


PMD官方文档:http://maven.apache.org/plugins/maven-pmd-plugin/index.html

PMD使用参考:http://maven.apache.org/plugins/maven-pmd-plugin/usage.html

 

0 0
原创粉丝点击