如何忽略 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。

原文由 Neriudon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

将其放入答案部分以附上屏幕截图:

如果您确信这两个代码块具有不同的角色,那么您可以从 Web 控制台将报告的严重性级别更改为 MinorInfo 。例如,请参见下面的屏幕截图: 在此处输入图像描述

有时 Sonar 报告严重的事情并不严重,但这又取决于项目性质 :)

但是,就像上面评论中提到的 @Stephen 一样,如果 xxx 是相同的字段并且继承有意义,那么您可以使用父抽象类来避免报告。

原文由 Yogen Rai 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以通过多种方式实现这一目标,具体取决于您对这个重复问题的重视程度。 SonarQube 报告它发现的内容,完全由您决定如何处理它。

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

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

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

原文由 Mithfindel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题