Подтвердить что ты не робот

Удалите одну проверку правила из 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>

Но он продолжает сообщать об этих правилах.

Также: я не хочу указывать, какие правила он должен проверять, поскольку новые версии могут (и будут) включать новые, и я не хочу проверять, какие новые правила будут выполняться в каждой новой версии.

4b9b3361

Ответ 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>