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