我在pmd编写了一个自定义规则并编写了规则类。
自定义规则是:
<?xml version="1.0"?>
<ruleset name="My custom rules"
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">
<rule name="WhileLoopsMustUseBracesRule"
message="Avoid using 'while' statements without curly braces"
class="WhileLoopsMustUseBracesRule">
<description>
Avoid using 'while' statements without using curly braces
</description>
<priority>3</priority>
<example>
<![CDATA[
public void doSomething() {
while (true)
x++;
}
]]>
</example>
</rule>
</ruleset>
,班级是:
import net.sourceforge.pmd.lang.java.rule.*;
import net.sourceforge.pmd.lang.java.ast.*;
public class WhileLoopsMustUseBracesRule extends AbstractJavaRule {
public Object visit(ASTWhileStatement node, Object data) {
System.out.println("hello world");
return data;
}
}
现在我从终端输入命令
sh run.sh pmd -d /Users/sree/Documents/learning/programs/java xml /Users/sree/Desktop/customrule.xml
我收到此错误:
传递了主参数'xml'但没有定义主参数
现在要包含自定义规则,以便我可以从终端访问它,并在将jar文件中的规则和ruleset.xml文件捆绑在一起后如何将其包含在类路径中
注意:我使用的是mac而不是Windows操作系统
答案 0 :(得分:0)
我正在使用它:
./run.sh pmd -d /Users/ardaaslan/Documents/workspace/PMDRulesTest/src/AttributeTypeAndNameIsInconsistentTest.java -f text -R /Users/ardaaslan/Downloads/pmd-src-5.5.1/pmd-java/src/main/resources/rulesets/java/customrules.xml -version 1.7
在-d
之后,我给出了自定义规则代码的目录。
然后我给出了-f
的输出格式,即文本。然后是rule.xml
。
要做的另一件事是使用pmd-bin的库作为类路径编译源代码
javac -cp /Users/ardaaslan/Downloads/pmd-bin-5.5.0/lib/\* AttributeTypeAndNameIsInconsistentRule.java
然后将编译好的.class
文件放到jar中并在
pmd-bin-5.5.0/lib
为pmd找到你的类文件
在此之后,您可以尝试再次执行run.sh
。