首页 > 解决方案 > 如何忽略 Sonar 中的重复代码报告?

问题描述

SonarQube 向不同的简单 POJO 类报告为“重复代码块”,如下所示。在这种情况下,A 和 B 是不同的角色。所以,我认为我不应该创建抽象类。

public class A{
  private String xxx;

  // omitted other fields.

  public A() {}

  public String getXxx() {
     return xxx;
  }
  public void setXxx(String xxx) {
     this.xxx= xxx;
  }

  // omitted other fields' setter and getter

}

public class B{
  private String xxx;

  // omitted other fields.

  public B() {}

  public String getXxx() {
     return xxx;
  }
  public void setXxx(String xxx) {
     this.xxx= xxx;
  }

  // omitted other fields' setter and getter

}

严重性是主要的。所以,我想忽略它。然后,我将@SuppressWarning("common-java:DuplicatedBlocks") 和@SuppressWarning("all") 添加到这两个类中。但它不能被忽视。

尽管在JIRA中提出了类似的问题,但尚未解决。我的 SonarQube 的版本是 6.5。谢谢!

标签: javasonarqube

解决方案


有几种方法可以实现这一点,具体取决于您对此重复问题的重视程度。SonarQube 会报告它的发现,由您决定如何处理它。

  • 如果您认为这确实是一个问题,则必须重构您的代码:SonarQube cannot report duplication when there are none
  • 如果您认为此特定实例不是问题,您可以降低问题的严重性,或将其标记为“无法修复”,并为后面的人提供一个很好的评论 - 我相信使用@SuppressWarnings当 SonarQube 中有专用功能时,对此的注释有点滥用
  • 如果您认为 SonarQube 甚至不应该引发有关重复代码的问题,您可以禁用规则(核选项),或设置您的分析以忽略 POJO 包的重复

例如,您可以将以下属性添加到扫描仪配置中:

sonar.cpd.exclusions=path/to/your/package/*.java

推荐阅读