簡體   English   中英

PMD自定義規則集-也許您拼錯了規則名稱?

[英]PMD custom ruleset - Maybe you mispelled a rule name?

我正在嘗試將pmd集成到我的項目中。 但我收到以下錯誤

java.lang.IllegalArgumentException:找不到規則。 也許您拼錯了規則名稱?

pom.xml條目如下所示-

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.7</version>
            <configuration>
                <linkXRef>false</linkXRef>
                <rulesets>             
                    <ruleset>
                        pmdruleset.xml
                    </ruleset>
                </rulesets>
            </configuration>
        </plugin>
    </plugins>
</reporting>

自定義規則集文件包含以下內容-

<?xml version="1.0"?>
<ruleset name="Controversial"
         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">

    <description>
        <rule ref="rulesets/java/errorprone.xml/NullAssignment"/>
    </description>
</ruleset>

我不明白哪里出了問題。 有人可以幫忙!

@ eclipse-pmd是正確的,rule標簽必須是ruleset標簽的子元素。

此外,您嘗試使用的規則(NullAssignment)不在易於出錯的規則集中,而是有爭議的。 在PMD 6中,這些規則已另外分類,並且現在屬於“容易出錯”類別。 有關此的更多內容。

maven-pmd-plugin 3.7 / PMD 5.5.1

您正在使用maven-pmd-plugin版本3.7->這意味着,您將自動使用舊的PMD版本(准確地說是版本5.5.1)。 對於此版本,您的規則集應如下所示:

<?xml version="1.0"?>
<ruleset name="Custom Ruleset"
     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">

    <description>
        Custom Ruleset
    </description>

    <rule ref="rulesets/java/controversial.xml/NullAssignment"/>
</ruleset>

有關PMD 5.5.1的文檔,請訪問: https//pmd.github.io/pmd-5.5.1/pmd-java/rules/java/controversial.html#NullAssignment

maven-pmd-plugin 3.9.0 / PMD 6.0.1

如果您切換到最新的maven-pmd-plugin版本3.9.0,將自動使用PMD 6.0.1,並從最新的錯誤修復中受益。 您可以繼續使用上方的規則集,但是由於我們移動了規則,因此您將看到棄用通知。 要擺脫此警告,請使用以下規則參考:

<rule ref="category/java/errorprone.xml/NullAssignment" />

有關PMD 6.0.1的文檔,請訪問: https//pmd.github.io/pmd-6.0.1/pmd_rules_java_errorprone.html#nullassignment

有關規則集的文檔在這里: https : //pmd.github.io/pmd-6.0.1/pmd_userdocs_understanding_rulesets.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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