基于Gradle使用阿里巴巴Java开发规约进行代码检查


声明:本文转载自https://my.oschina.net/u/1469495/blog/1553231,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

阿里的开发规约插件是基于PMD进行的代码检测,而且已经有PMD的Gradle插件。

参考gradle pmd插件的自定义规则的使用这文章后,剩下的问题就是如何把阿里制定的Rule也引进来。

定制RuleSet

新建文件 etc/pmd/ruleset.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> 

从上面例子可以看出,非常方便定制rule。甚至还可以使用 exclude 标签排队不需要的rule。

build.gradle

apply plugin: 'java' apply plugin: 'pmd'  ext {   p3cPmdVersion = "1.3.0"   pmdVersion = '5.5.2' # 与p3c-pmd 中使用pmd的版本一致 }  // PMD配置 pmd {   toolVersion = pmdVersion // 避免使用比较旧的版本,需要指定pmd的版本   ignoreFailures = true   ruleSetConfig = resources.text.fromFile("etc/pmd/ruleset.xml") }  dependencies {   pmd "com.alibaba.p3c:p3c-pmd:${p3cPmdVersion}" } 

通过上面例子可以看出,使用p3c-pmd,其实很简单,只需要把其一些rule 导到ruleSetConfig 文件中即可。

执行检查

PMD插件提供了如下几个任务:

任务名称 ...... 描述

pmdMain ...... 检查src/main/java下的代码

pmdTest ...... 检查src/main/test下的代码

pmdSourceSet ...... 检查给定范围的代码

check ...... 检查源码和单元测试代码

执行下面命令:

gradle check 

会将执行结果输出到 build/reports/pmd目录中的main.html、test.html等文件中。

本文发表于2017年10月19日 12:34
(c)注:本文转载自https://my.oschina.net/u/1469495/blog/1553231,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2448 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1