PMD / CPD: игнорировать биты кода, используя комментарии - PullRequest
15 голосов
/ 24 апреля 2011

Есть ли способ заставить PMD игнорировать проверку частей кода на дублирование?

Например, могу ли я сделать что-то вроде этого:

// CPD-Ignore-On
...
// CPD-Ignore-Off

В настоящее время я настроил PMDнапример, используя Maven, но не вижу никаких аргументов, которые бы побуждали меня делать то, что я хочу, если я что-то упустил.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <minimumTokens>40</minimumTokens>
                <targetJdk>1.5</targetJdk>
                <ignoreIdentifiers>true</ignoreIdentifiers>
                <ignoreLiterals>true</ignoreLiterals>
            </configuration>
        </plugin>

Ответы [ 3 ]

17 голосов
/ 05 сентября 2013

Покопавшись достаточно, я наконец-то наткнулся на это.

Добавляя аннотации @SuppressWarnings("CPD-START") и @SuppressWarnings("CPD-END"), весь код внутри будет игнорироваться CPD - таким образом вы сможете избежать ложных срабатываний.

Источник - http://pmd.sourceforge.net/pmd-5.0.5/cpd-usage.html.

2 голосов
/ 28 февраля 2013

Я нашел возможным отключить проверку всего класса в конфигурации maven-pmd-plugin в pom проекта.Это выполняется путем добавления тега <excludes>.Если вы хотите это сделать, ваш conf должен выглядеть следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <minimumTokens>40</minimumTokens>
        <targetJdk>1.5</targetJdk>
        <ignoreIdentifiers>true</ignoreIdentifiers>
        <ignoreLiterals>true</ignoreLiterals>
        <excludes>
            <exclude>**/YourClassName.java</exclude>
            ........
            <exclude>....</exclude>
        </excludes>
    </configuration>
</plugin>
1 голос
/ 17 апреля 2019

Я знаю, что это вопрос 8 лет, но, для полноты, CPD поддерживает это с PMD 5.6.0 (апрель 2017 г.).

Полные (текущие) документы для подавления на основе комментариев доступны по адресу https://pmd.github.io/pmd-6.13.0/pmd_userdocs_cpd.html#suppression

Стоит отметить, что если файл имеет комментарий // CPD-OFF, но не соответствует // CPD-ON, все будет игнорироваться до конца файла.

...