阿里巴巴规约使用的是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