我找不到如何告诉PMD-CPD跳过特定方法的选项。
我们使用生成的equals()
和hashCode()
方法,因此这些方法看起来非常相似,并且CPD会将很多方法报告为重复代码。
我可以在代码中使用一些//NOPMD
条评论,但在我看来,如何管理我的代码并不是什么方法。因为我在代码中加入了一个与代码无关的工具。 CPD有助于避免编码错误/样式,不应强迫我修改我的代码。
如果有人有一些想法如何解决它,那将会非常有用。
祝福
答案 0 :(得分:1)
PMD CPD没有这样的选择,因此没有提交功能请求,这是不可能的。
但是,您可以按照in the CPD docs:
所述使用注释进行抑制//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或其他工具及其背后的数据库。