我从未使用过 Gradle 的 PMD 插件,并且在尝试将规则集添加到我的项目时遇到了麻烦build.gradle
. The Pmd 文档 http://www.gradle.org/docs/current/dsl/org.gradle.api.plugins.quality.Pmd.html不清楚什么是有效值ruleSets
是。他们的例子是ruleSets = ["basic", "braces"]
他们链接到“官方名单” http://pmd.sourceforge.net/pmd-5.0.5/rules/index.html。不幸的是,没有什么可继续的。
我猜测部分标题以某种方式映射到有效字符串?喜欢,
-
“基本(java)” http://pmd.sourceforge.net/pmd-5.0.5/rules/index.html#Basic->“基本”
-
“大括号(java)” http://pmd.sourceforge.net/pmd-5.0.5/rules/index.html#Braces_java->“大括号”
但是像这样的事情呢?“空代码(java)” http://pmd.sourceforge.net/pmd-5.0.5/rules/index.html#Empty_Code?
这是一个工作build.gradle
例子:
apply plugin: 'java'
apply plugin: 'pmd'
pmd {
ruleSets = [
// The first two better work since it's right in the Javadoc...
"basic",
"braces",
// This one does not work and other variations like
// "empty code", "emptycode", "empty-code", "empty_code" do not work.
"emptyCode"
]
}
repositories {
mavenCentral()
}
Gradle 吐出以下错误:
$ gradle check
:pmdMain FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':pmdMain'.
> Can't find resource emptyCode. Make sure the resource is a valid file or URL
or is on the CLASSPATH. Here's the current classpath:
/Users/kuporific/gradle/gradle-1.10/lib/gradle-launcher-1.10.jar
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.
BUILD FAILED
Total time: 9.907 secs
跑步与--stacktrace
or --debug
按照建议似乎没有产生任何有用的东西......
注意:创建一个虚拟文件,例如src/main/java/Dummy.java
。否则,构建will成功。
How are ruleSets
supposed被宣布?
Edit:
最终声明变得更容易xml
规则集,因为它提供了对规则的细粒度控制。它包含在build.gradle
像这样:
apply plugin: 'pmd'
pmd {
ruleSetFiles = files('path/to/ruleSet.xml')
}
规则集文件看起来像这样:
注意:此示例是为 Gradle 1.10 编写的。较新版本的 Gradle(大约 2.0)使用较新版本的 PMD;因此,许多rulesets
路径改变了。所以rulesets/logging-java.xml
现在发现于rulesets/java/logging-java.xml
, 例如。
<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Android Application Rules"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
http://pmd.sf.net/ruleset_xml_schema.xsd" >
<rule ref="rulesets/logging-java.xml" />
<rule ref="rulesets/basic.xml" />
<rule ref="rulesets/braces.xml" />
<rule ref="rulesets/codesize.xml" >
<exclude name="TooManyMethods" />
</rule>
<rule ref="rulesets/controversial.xml">
<exclude name="UseConcurrentHashMap" />
<exclude name="AvoidLiteralsInIfCondition" />
<exclude name="DataflowAnomalyAnalysis" />
<exclude name="CallSuperInConstructor" />
<exclude name="AtLeastOneConstructor" />
<exclude name="NullAssignment" />
</rule>
<!-- etc... -->
</ruleset>