PMD 自定义规则集 - 也许您拼错了规则名称?
PMD custom ruleset - Maybe you mispelled a rule name?
我正在尝试将 pmd 集成到我的项目中。但是我收到以下错误
java.lang.IllegalArgumentException: No rules found. Maybe you mispelled a rule name?
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 是的,规则标签需要是规则集标签的子标签。
此外,您尝试使用的规则 (NullAssignment) 不在规则集中,容易出错,但有争议。在 PMD 6 中,规则被额外组织成类别,现在属于 "errorprone" 类别。随后将对此进行更多介绍。
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
我正在尝试将 pmd 集成到我的项目中。但是我收到以下错误
java.lang.IllegalArgumentException: No rules found. Maybe you mispelled a rule name?
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 是的,规则标签需要是规则集标签的子标签。
此外,您尝试使用的规则 (NullAssignment) 不在规则集中,容易出错,但有争议。在 PMD 6 中,规则被额外组织成类别,现在属于 "errorprone" 类别。随后将对此进行更多介绍。
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