我找不到如何告诉 PMD-CPD 跳过特定方法的选项。我们使用生成的equals()
和hashCode()
方法,因此这些方法看起来通常非常相似,CPD 将其中很多报告为重复代码。
我可以//NOPMD
在代码中使用一些注释,但在我看来,这不是管理代码的方法。由于我将一个工具合并到代码中,因此与代码无关。CPD 有助于避免编码错误/样式,不应该强迫我修改我的代码。
如果有人对如何解决它有一些想法,那将非常有帮助。
最好的祝愿
PMD CPD 没有这样的选项,所以如果没有提交功能请求,这是不可能的。
但是,您可以使用注释进行抑制,如CPD 文档中所述:
//enable suppression
@SuppressWarnings("CPD-START")
public Object someMethod(int x) throws Exception {
// any code here will be ignored for the duplication detection
}
//disable suppression
@SuppressWarnings("CPD-END")
public void nextMethod() {
}
就个人而言,我不太喜欢这种语法,因为它会让你注释完全不相关的方法。nextMethod()
与 无关someMethod()
,但仍然得到CPD-END
注释。但这可能比发表大量//NOPMD
评论要好。它还排除了仅适用于 CPD 的方法,但不排除其他 PMD 检测器的方法//NOPMD
。
您最初不希望将分析工具的信息放入代码中是可以理解的。但是,当我想到它时,注释和注释确实说明了代码,因此在源代码中拥有代码的元信息并不是一件坏事。如果您仍然不喜欢它,请考虑使用SonarQube或其他带有数据库的工具。