Удалите одну проверку правила из PMD в плагине maven
Я хочу исключить одно правило PMD в POM, но оно не работает.
Я попытался создать pmd-exclude.xml(в том же каталоге, что и pom.xml):
<?xml version="1.0"?>
<ruleset name="remove_rules">
<description>Remove rules</description>
<rule ref="rulesets/unnecessary.xml">
<exclude name="UselessParentheses"/>
</rule>
</ruleset>
От http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html и ссылается на него в pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<sourceEncoding>utf-8</sourceEncoding>
<rulesets>
<ruleset>${pom.basedir}/pmd-exclude.xml</ruleset>
</rulesets>
</configuration>
</plugin>
Но он продолжает сообщать об этих правилах.
Также: я не хочу указывать, какие правила он должен проверять, поскольку новые версии могут (и будут) включать новые, и я не хочу проверять, какие новые правила будут выполняться в каждой новой версии.
Ответы
Ответ 1
Я думаю, вам нужно будет добавить набор правил, которые вы хотите проверить, и отбросить только определенное правило, которое вам не нужно.
pmd-exclude.xml должен выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Android Application Rules"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" >
<description>Remove rules</description>
<rule ref="rulesets/clone.xml" />
<rule ref="rulesets/finalizers.xml" />
<rule ref="rulesets/imports.xml" />
<rule ref="rulesets/logging-java.xml" />
<rule ref="rulesets/unnecessary.xml" >
<exclude name="UselessParentheses" />
</rule>
</ruleset>
Ответ 2
Решение @marcelopazzo работало для меня. Я просто хочу добавить, что если вы работаете с мультимодульным проектом maven, вам придется обновить свою ссылку на pmd-exclude.xml, если вы не планируете иметь копию этого файла в каждом модуле.
Пример
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.6</version>
<configuration>
<rulesets>
<ruleset>${project.parent.basedir}/pmd-exclude.xml</ruleset>
</rulesets>
</configuration>
</plugin>