项目管理tips之代码质量控制——通过maven-pmd-plugin插件自动扫描工程中不合规约的代码

Posted 独孤文彬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目管理tips之代码质量控制——通过maven-pmd-plugin插件自动扫描工程中不合规约的代码相关的知识,希望对你有一定的参考价值。

需求背景:

代码质量审查,需要用到阿里规约的检查,尽管建议大家在客户端自己的IDE中进行了扫描,但是难免会有人忘记。因此,在CI过程中,利用maven插件做一次统一的自动化扫描

插件检查结果展示

操作指南:

第一步:在你maven工程的父工程中配置如下插件

		<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>3.8</version>
				<configuration>
					<sourceEncoding>$project.build.sourceEncoding</sourceEncoding>
					<targetJdk>$maven.compiler.target</targetJdk>
					<printFailingErrors>true</printFailingErrors>
					<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>
				</configuration>
				<executions>
					<!--绑定pmd:check到verify生命周期-->
					<execution>
						<id>pmd-check-verify</id>
						<phase>verify</phase>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
					<!--绑定pmd:pmd到site生命周期-->
					<execution>
						<id>pmd-pmd-site</id>
						<phase>site</phase>
						<goals>
							<goal>pmd</goal>
						</goals>
					</execution>
				</executions>

				<dependencies>
					<dependency>
						<groupId>com.alibaba.p3c</groupId>
						<artifactId>p3c-pmd</artifactId>
						<version>1.3.5</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-site-plugin</artifactId>
				<version>3.7.1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>3.0.0</version>
			</plugin>

第二步:在父工程中配置reporting

<!--用于生成错误到代码内容的链接-->
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.5</version>
            </plugin>
        </plugins>
    </reporting>

第三步:执行生命周期目标
mvn site

第四步:打开网站,查阅结果
找到target目录下的index.html点击打开
找到target目录下的pmd.html打开

实施技巧:

  • 根据需求绑定到不同的生命周期

例如:绑定到package阶段,修改executions即可

	<!--绑定pmd:check到verify生命周期-->
	<execution>
		<id>pmd-check-verify</id>
		<phase>package</phase>
		<goals>
			<goal>check</goal>
		</goals>
	</execution>
  • 根据需求控制每次需要检查的规约

例如:只检查命名规范,则需要修改 rulesets 标签中的内容,只保留naming这一条规则。注释其他的规则

<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>

备注:

运行mvn site命令,会下载和解析大量jar包以及依赖关系,比较费时

以上是关于项目管理tips之代码质量控制——通过maven-pmd-plugin插件自动扫描工程中不合规约的代码的主要内容,如果未能解决你的问题,请参考以下文章

SVN-Tips

软考知识点梳理--项目质量控制老七工具之控制图

gitlab+jenkins+maven+docker持续集成——sonarqube及sonarscanner代码审查

持续集成之代码质量管理———Sonar

持续集成之代码质量管理 Sonar

持续集成之代码质量管理——Sonar