簡體   English   中英

如何在pmd中添加自定義規則並從終端使用它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM