PMD CPD排除equals和hashcode等方法?

时间:2014-07-16 05:52:03

标签: java pmd cpd

我找不到如何告诉PMD-CPD跳过特定方法的选项。 我们使用生成的equals()hashCode()方法,因此这些方法看起来非常相似,并且CPD会将很多方法报告为重复代码。

我可以在代码中使用一些//NOPMD条评论,但在我看来,如何管理我的代码并不是什么方法。因为我在代码中加入了一个与代码无关的工具。 CPD有助于避免编码错误/样式,不应强迫我修改我的代码。

如果有人有一些想法如何解决它,那将会非常有用。

祝福

1 个答案:

答案 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或其他工具及其背后的数据库。