项目管理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插件自动扫描工程中不合规约的代码的主要内容,如果未能解决你的问题,请参考以下文章