如何忽略声纳中的重复代码报告?

2022-09-02 13:43:34

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。


答案 1

有几种方法可以实现此目的,具体取决于您对此重复问题的重视程度。SonarQube报告它发现的内容,这完全取决于你来决定如何处理它。

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

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

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

答案 2

最好的方法是调整质量门以满足您的需求。需要记住,默认的内置质量门是标准的,应该始终是首选。

复制默认值并创建新的质量门限。根据您的舒适度(取决于您的项目需求)对其进行编辑以接受重复百分比。

Copy the default and edit it to accept duplication percentage according to your comfort level


推荐