[英]How add custom rule in pmd and use it from terminal
我在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'但沒有定義主參數
現在要包含自定義規則,以便我可以從終端訪問它,並在將規則和ruleset.xml文件捆綁在一個jar文件中之后如何將它包含在類路徑中
注意:我使用的是Mac而不是Windows操作系統
我用這個:
./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中並移動該jar
pmd-bin-5.5.0/lib
為pmd找到你的類文件
在這些之后,您可以嘗試再次執行run.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.