springboot maven项目集成阿里p3c-pmd插件使用

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

标签是用来配置 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

你可能感兴趣的:(SpringBoot,maven,spring,boot,java)