PMD 插件使用 PMD 代码分析工具生成 PMD 和 CPD 报告。
要在项目站点中包含具有默认规则集和配置的报告,请在 POM 的<reporting>部分中设置以下内容:
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.16.0</version> </plugin> </plugins> </reporting> ... </project>
您还可以通过在 POM 的<build>部分中设置插件来显式执行 PMD 插件并生成相同的报告,如下所示:
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.16.0</version> </plugin> </plugins> </build> ... </project>
PMD 和 CPD 报告共享相同的配置。例如,以下内容告诉 Maven 在生成站点报告时运行 PMD 和 CPD 报告。
如果您使用linkXRef参数启用此功能,报告将直接链接到交叉引用的源。有关更多详细信息,请参阅JXR 插件。
如果您的源代码使用非默认编码,您可以使用sourceEncoding参数告诉 Maven 在读取 java 源代码时使用哪种编码。还要注意排除要忽略的源的能力。
您可以配置触发 CPD 的最小代码大小。默认的100 个令牌对应于大约 5-10 行代码。
由于 PMD 解析 Java 源代码,因此它需要知道要使用哪个 Java 版本。以下是可能的配置:
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.16.0</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> <reportSets> <reportSet><!-- by default, id = "default" --> <reports><!-- select non-aggregate reports --> <report>pmd</report> <report>cpd</report> </reports> </reportSet> <reportSet><!-- aggregate reportSet, to define in poms having modules --> <id>aggregate</id> <inherited>false</inherited> <!-- don't run aggregate in child modules --> <reports> <report>aggregate-pmd</report> <report>aggregate-cpd</report> </reports> </reportSet> </reportSets> </plugin> </plugins> </reporting> ... </project>