阿里巴巴规约使用的是pmd代码静态分析工具,通过maven-pmd-plugin这个maven插件实现。
pom文件引入
<!-- 阿里p3c插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.15.0</version>
<configuration>
<verbose>true</verbose>
<!-- 规范的配置 -->
<rulesets>
<ruleset>rulesets/java/ali-comment.xml</ruleset>
<ruleset>rulesets/java/ali-concurrent.xml</ruleset>
<ruleset>rulesets/java/ali-constant.xml</ruleset>
<ruleset>rulesets/java/ali-exception.xml</ruleset>
<ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
<ruleset>rulesets/java/ali-naming.xml</ruleset>
<ruleset>rulesets/java/ali-oop.xml</ruleset>
<ruleset>rulesets/java/ali-orm.xml</ruleset>
<ruleset>rulesets/java/ali-other.xml</ruleset>
<ruleset>rulesets/java/ali-set.xml</ruleset>
</rulesets>
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
<execution>
<id>pmd-check-verify</id>
<phase>package</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>pmd-pmd-site</id>
<phase>site</phase>
<goals>
<goal>cpd</goal>
</goals>
</execution>
</executions>
</plugin>
执行命令:mvn pmd:cpd
pmd有以下几个命令:
- check:代码检测,没通过,就编译失败
- cpd:执行会创建一个详细报表
- cpd-check:没通过,就编译失败
- pmd:生成详细报表
pmd configuration配置说明
<configuration>
标签是用来配置 maven-pmd-plugin 插件的。以下是 maven-pmd-plugin 插件的一些常用配置属性及其含义:
-
showViolations:
是否展示违规的具体内容。默认值为 false。 -
rulesets:
指定规则集。可以是内置规则集或外部自定义规则集。 -
excludes:
指定要排除的文件或目录的路径,支持使用通配符。 -
includes:
指定要包含的文件或目录的路径,支持使用通配符。 -
targetJdk:
设置代码运行的目标JDK版本,以便正确解析代码。默认值为当前JDK版本。 -
skipEmptyReport:
是否跳过空报告。默认值为 false。 -
printFailingErrors:
在控制台上输出错误信息。默认值为 false。 -
linkXref:
在生成的HTML报告中包含跨引用链接。默认值为 false。 -
maximumViolationSeverity:
设置要显示的最高违规级别,低于该级别的违规将不被显示。默认值为 5(INFO)。 -
failOnViolation:
是否在发现违规时阻止构建。默认值为 false。 -
failOnRuleViolation:
是否在违反任何规则时阻止构建。默认值为 false。 - 此外,还有许多其他的属性可以根据需求进行配置。你可以参考官方文档了解更多详细的配置属性和含义:
https://maven.apache.org/plugins/maven-pmd-plugin/examples/violations.html