Плагин PMD Maven не уважает exclude-cpd.properties - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть проект maven с несколькими модулями, структура выглядит следующим образом:

/myProject 
  pom.xml
  exclude-cpd.properties
  -- module1
     pom.xml
     exclude-cpd.properties
  -- module2
     pom.xml
     exclude-cpd.properties

в моем родительском pom.xml я добавил плагин pmd:

<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.12.0</version>
                    <configuration>
                        <rulesets>
                            <ruleset>pmd_ruleset.xml</ruleset>
                        </rulesets>
                        <minimumTokens>80</minimumTokens>
                        <includeTests>true</includeTests>
                        <excludeFromFailureFile>exclude-cpd.properties</excludeFromFailureFile>
                        <printFailingErrors>true</printFailingErrors>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

и в exclude-cpd.properties Я включаю все файлы, которые я хочу исключить из cpd-check как строки, разделенные запятыми.

, но когда я запускаю mvn clean compile, он все равно сканирует эти исключенные файлы и жаловался на дублирование.Кажется, что excludeFromFailureFile вообще не работает, мне пришлось использовать excludes для исключения файлов из проверки pmd и cpd, но это не идеально.кто-нибудь знает, как заставить excludeFromFailureFile работать?

рабочий файл.xml:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.12.0</version>
                <configuration>
                    <rulesets>
                        <ruleset>pmd_ruleset.xml</ruleset>
                    </rulesets>
                    <minimumTokens>80</minimumTokens>
                    <includeTests>true</includeTests>
                    <excludes>
                        <exclude>**/XyzService*.java</exclude>
                    </excludes>
                    <printFailingErrors>true</printFailingErrors>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

1 Ответ

1 голос
/ 27 сентября 2019

Я думаю, вы неправильно понимаете флаги.

excludeFromFailureFile означает буквально следующее: не отказывайте в сборке, если в этих файлах сообщается о нарушениях.Файлы по-прежнему анализируются, но если только эти файлы и никакие другие не имеют нарушений, сборка все еще проходит (если другие файлы имеют нарушения, сборка все еще не выполняется).Это даже не функция PMD, а плагин Maven.

Это не «исключение из анализа», для этого у вас есть конфигурация excludes, которую вы используете во втором примере.

...