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


陪伴而非守候
浏览 1878回答 3
3回答

开心每一天1111

有多种方法可以实现这一点,具体取决于您对此重复问题的重视程度。SonarQube 报告它发现的内容,完全由您决定如何处理它。如果您认为这确实是一个问题,则必须重构您的代码:SonarQube 在没有重复时无法报告重复如果您认为此特定实例不是问题,您可以降低问题的严重性,或将其标记为“无法修复”,并为将要跟随您的人提供一个很好的评论 - 我相信使用@SuppressWarnings当 SonarQube 中有专用功能时,对此的注释有点滥用如果您认为 SonarQube 甚至不应该引发关于重复代码的问题,您可以禁用规则(核选项),或者设置您的分析以忽略 POJO 包的重复例如,您可以将以下属性添加到您的扫描仪配置中:sonar.cpd.exclusions=path/to/your/package/*.java

POPMUISE

将此放入答案部分以附上屏幕截图:如果您确信这两个代码块具有不同的角色,那么您可以将报告的严重性级别更改为web-consoleMinor或Info从 web-console更改。例如,请参见下面的屏幕截图:有时声纳报告的事情不是很严重,但同样取决于项目性质:)但是,就像@Stephen在上面的评论中提到的那样,如果xxx相同的字段和继承有意义,那么您可以使用父抽象类来避免报告。

RISEBY

最好的方法是调整质量门以满足您的需要。需要记住,默认的内置质量门是标准的,应该始终是首选。复制默认值并创建一个新的质量门。编辑它以根据您的舒适程度(取决于您的项目需要)接受重复百分比。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java