为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

陪伴而非守候 2021-11-24 15:48:04
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。谢谢!
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

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

  • 如果您认为这确实是一个问题,则必须重构您的代码:SonarQube 在没有重复时无法报告重复

  • 如果您认为此特定实例不是问题,您可以降低问题的严重性,或将其标记为“无法修复”,并为将要跟随您的人提供一个很好的评论 - 我相信使用@SuppressWarnings当 SonarQube 中有专用功能时,对此的注释有点滥用

  • 如果您认为 SonarQube 甚至不应该引发关于重复代码的问题,您可以禁用规则(核选项),或者设置您的分析以忽略 POJO 包的重复

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

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


查看完整回答
反对 回复 2021-11-24
?
POPMUISE

TA贡献1765条经验 获得超5个赞

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

如果您确信这两个代码块具有不同的角色,那么您可以将报告的严重性级别更改为web-consoleMinorInfo从 web-console更改。例如,请参见下面的屏幕截图:

//img1.sycdn.imooc.com//619dee5b000149cf13820389.jpg

有时声纳报告的事情不是很严重,但同样取决于项目性质:)

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


查看完整回答
反对 回复 2021-11-24
?
RISEBY

TA贡献1856条经验 获得超5个赞

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

复制默认值并创建一个新的质量门。编辑它以根据您的舒适程度(取决于您的项目需要)接受重复百分比。

//img1.sycdn.imooc.com//619dee700001982225211025.jpg

查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 1809 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信