PMD/CPD:使用注释忽略代码位

2022-09-02 09:21:09

有没有办法告诉PMD忽略检查部分代码的重复?

例如,我可以做这样的事情吗:

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

目前,我使用Maven设置了PMD,但是除非我错过了什么,否则看不到任何希望我做我想做的事情的论据。

        <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>

答案 1

在挖掘了足够多之后,我终于遇到了它。

通过添加注释,CPD将忽略其中的所有代码 - 因此您可以避免误报。@SuppressWarnings("CPD-START")@SuppressWarnings("CPD-END")

来源 - http://pmd.sourceforge.net/pmd-5.0.5/cpd-usage.html


答案 2

我知道这是一个8年前的问题,但为了完整性,CPD确实支持自PMD 5.6.0(2017年4月)以来。

有关基于注释的抑制的完整(当前)文档,请访问 https://pmd.github.io/pmd-6.13.0/pmd_userdocs_cpd.html#suppression

值得注意的是,如果文件有注释,但没有匹配,则所有内容都将被忽略,直到文件结束。// CPD-OFF// CPD-ON


推荐