使用Gradle对Java代码进行开发规范检查 - 简书
source link: https://www.jianshu.com/p/cbcc05bcfef4?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用Gradle对Java代码进行开发规范检查
使用Gradle对Java代码进行开发规范检查
PMD是一种开源分析源代码错误的工具,它会发现一些常见的编程缺陷,比如未使用的变量,空的catch块,不必要的对象创建等。它支持Java,JavaScript等。
此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
基于PMD,阿里巴巴基于自己的Java编码规范实现了P3C-PMD
设置检查规则
检查规则为xml格式,注意配置中指定的配置文件在jra包中,需要p3c包编译到项目中才行正确引入:
dependencies {
pmd "com.alibaba.p3c:p3c-pmd:2.0.0"
}
xml配置文件如下:
<?xml version="1.0"?>
<ruleset name="Custom ruleset"
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
自定义Rule set
</description>
<!-- 引入PMD制定的Rule, 来源于https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java -->
<rule ref="rulesets/java/android.xml">
<exclude name="CallSuperLast"/>
</rule>
<rule ref="rulesets/java/basic.xml">
<exclude name="CollapsibleIfStatements"/>
</rule>
<rule ref="rulesets/java/clone.xml"/>
<rule ref="rulesets/java/finalizers.xml"/>
<rule ref="rulesets/java/imports.xml"/>
<rule ref="rulesets/java/javabeans.xml"/>
<rule ref="rulesets/java/optimizations.xml">
<exclude name="LocalVariableCouldBeFinal"/>
<exclude name="MethodArgumentCouldBeFinal"/>
</rule>
<rule ref="rulesets/java/sunsecure.xml"/>
<rule ref="rulesets/java/unnecessary.xml">
<exclude name="UselessParentheses"/>
</rule>
<!-- 引入阿里的Rule, 来源于 https://github.com/alibaba/p3c/tree/master/p3c-pmd/src/main/resources/rulesets/java -->
<rule ref="rulesets/java/ali-comment.xml">
</rule>
<rule ref="rulesets/java/ali-concurrent.xml">
</rule>
<rule ref="rulesets/java/ali-constant.xml">
</rule>
<rule ref="rulesets/java/ali-exception.xml">
</rule>
<rule ref="rulesets/java/ali-flowcontrol.xml">
</rule>
<rule ref="rulesets/java/ali-naming.xml">
</rule>
<rule ref="rulesets/java/ali-oop.xml">
</rule>
<rule ref="rulesets/java/ali-orm.xml">
</rule>
<rule ref="rulesets/java/ali-other.xml">
</rule>
<rule ref="rulesets/java/ali-set.xml">
</rule>
</ruleset>
该配置文件放在etc/pmd/relest.xml
下
配置Gradle
apply plugin: "pmd"
pmd {
toolVersion = '6.17.0'
ignoreFailures = true
ruleSetConfig = resources.text.fromFile("etc/pmd/ruleset.xml")
}
dependencies {
pmd "com.alibaba.p3c:p3c-pmd:2.0.0"
...
}
其中ignoreFailures
如果设置为true表示规范检查即使是不通过gradle check
也不会报错,设置为false时,代码规范检查必须通过才check的时候才不会报错。
运行PMD
可以通过命令:
gradle check
运行pmdMain
,它会检查src/main/java下的代码,还会运行pmdTest
,它会检查src/main/test下的代码。
也可以分别运行这两个命令:
gradle pmdMain
gradle pmdTest
运行之后的结果在目录build/reports/pmd
中的main.html,test.html文件中
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK