【问题标题】:PMD CPD exclude methods like equals and hashcode?PMD CPD 排除equals和hashcode之类的方法?
【发布时间】:2014-07-16 05:52:02
【问题描述】:

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

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

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

祝你好运

【问题讨论】:

    标签: java pmd cpd


    【解决方案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 cmets 更好。它还排除了仅适用于 CPD 的方法,但不排除其他 PMD 检测器,就像//NOPMD 那样。

    您最初不希望将分析工具的信息放入代码中是可以理解的。但是,当我想到它时,注释和 cmetsdo 说明了代码,因此在源代码中拥有代码的元信息并不是一件坏事。如果您仍然不喜欢它,请考虑使用SonarQube 或其他带有数据库的工具。

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多