有没有办法告诉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>
答案 0 :(得分:17)
经过深入挖掘后,我终于遇到了它。
通过添加注释@SuppressWarnings("CPD-START")
和@SuppressWarnings("CPD-END")
,CPD会忽略其中的所有代码 - 因此您可以避免误报。
答案 1 :(得分:2)
我发现只有在项目pom中禁用maven-pmd-plugin配置中的全班检查才有可能。它是通过添加<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>
答案 2 :(得分:0)
我知道这是一个已有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
,则所有文件将被忽略,直到文件结尾。