gradle pmd插件的自定义规则的使用
2015-12-23 17:52
701 查看
gradle pmd plugin的规则是支持自定义的。在使用的过程中遇到了些问题, 先记录如下。
build.gradle中使用pmd 插件,其中ruleSets = [] 是必须的, 否则ruleSetFiles不生效。因为gradle pmd会使用一些默认规则,例如basic。
task pmd (type: Pmd) {
ruleSetFiles = files("$rootProject.projectDir/tools/pmd/ruleset.xml")
ruleSets = []
source = fileTree('src')
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = false
}
}
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>
This ruleset used by pmd to check my code for bad stuff
</description>
<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>
</ruleset>
build.gradle中使用pmd 插件,其中ruleSets = [] 是必须的, 否则ruleSetFiles不生效。因为gradle pmd会使用一些默认规则,例如basic。
task pmd (type: Pmd) {
ruleSetFiles = files("$rootProject.projectDir/tools/pmd/ruleset.xml")
ruleSets = []
source = fileTree('src')
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = false
}
}
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>
This ruleset used by pmd to check my code for bad stuff
</description>
<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>
</ruleset>
相关文章推荐
- SourceProvider.getJniDirectories
- 执行失败的任务 ': processDebugManifest'
- Android Studio使用教程(六):Gradle多渠道打包
- Android Studio使用教程(四):Gradle基础
- Android Studio使用教程(五):Gradle命令详解和导入第三方包
- Win7安装gradle
- 关于Android Studio 和 Gradle的那些事儿
- Gradle这个黑盒子
- maven用户试用gradle
- 用Gradle 构建你的android程序
- 用Gradle 构建你的android程序-依赖管理篇
- Gradle 构建 android 应用常见问题解决指南
- Adnroid Studio Gradle 多渠道打包
- Gradle,构建工具的未来?
- Android Studio 使用 Gradle 打包 Jar-IT蓝豹
- gradle安装
- 如何在 Eclipse 下用 Gradle 构建 Web Application
- Android Studio 1.2中配置androidannotations
- Android Studio 初始新建项目时 build gradle project 超级慢的原因
- Android Studio Gradle project refresh failed No such property classpath for class