以下是一份pmd的rules文件
<?xml version="1.0"?> <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"> <description>Custom ruleset for ribot Android application</description> <exclude-pattern>.*/R.java</exclude-pattern> <exclude-pattern>.*/gen/.*</exclude-pattern> <rule ref="rulesets/java/android.xml" /> <rule ref="rulesets/java/clone.xml" /> <rule ref="rulesets/java/finalizers.xml" /> <rule ref="rulesets/java/imports.xml"> <!-- Espresso is designed this way !--> <exclude name="TooManyStaticImports" /> </rule> <rule ref="rulesets/java/logging-java.xml"> <!-- This rule wasn't working properly and given errors in every var call info --> <exclude name="GuardLogStatementJavaUtil" /> </rule> <rule ref="rulesets/java/braces.xml"> <!-- We allow single line if's without braces --> <exclude name="IfStmtsMustUseBraces" /> </rule> <rule ref="rulesets/java/strings.xml" > <!-- Exclude because causes problems with SQL Strings that usually require duplication --> <exclude name="AvoidDuplicateLiterals"/> </rule> <rule ref="rulesets/java/basic.xml" /> <rule ref="rulesets/java/naming.xml"> <exclude name="AbstractNaming" /> <exclude name="LongVariable" /> <exclude name="ShortMethodName" /> <exclude name="ShortVariable" /> <exclude name="ShortClassName" /> <exclude name="VariableNamingConventions" /> </rule> </ruleset>
这次主要讲的是怎么移除已有的规则(由于if嵌套需要合并的规则感觉不合理所以今天研究了一下怎么将这一条规则移除);
首先我们看一张官网上的规则分类图:
由以上这张图可以知道,pmd规则是由几大类构成,每个大类下面又有细则,所以我想要将我不要的规则移除的话,首先我要找到归属的大类,假如我报错的地方点进来是对应着ForLoopShouldBeWhileLoop这个,那么我们只需要将
<rule ref="rulesets/java/basic.xml" />
这段改为
<rule ref="rulesets/java/basic.xml">
<exclude name="ForLoopShouldBeWhileLoop" />
</rule>
是不是超级简单哈~~~~主要是exclude关键字在起作用哦~~