5

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

我可以//NOPMD在代码中使用一些注释,但在我看来,这不是管理代码的方法。由于我将一个工具合并到代码中,因此与代码无关。CPD 有助于避免编码错误/样式,不应该强迫我修改我的代码。

如果有人对如何解决它有一些想法,那将非常有帮助。

最好的祝愿

4

1 回答 1

1

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或其他带有数据库的工具。

于 2014-07-16T21:25:17.430 回答