【问题标题】:Sonarqube duplicated blocks of code between POJOsSonarqube 在 POJO 之间复制代码块
【发布时间】:2016-02-05 12:36:07
【问题描述】:

两个包中有两个 POJO MarketMarketDTO

Market 是来自远程服务的 JSON 响应的映射对象。

MarketDTO 是一个响应对象,将通过我们的服务公开。

Market->MarketDTO 提供了一些数据按摩。它们有一些共同的领域,也都有独特的领域。 有 idnamestatus 等 3 个常用字段。

但是,Sonarqube 将它们的 getter 和 setter 表示为要删除的重复代码块。这实际上是坏代码还是我应该将其标记为误报

【问题讨论】:

  • 如果它标记标准属性访问器,我会尽可能将其作为针对 SonarQube 的错误提交。

标签: java sonarqube


【解决方案1】:

您可以通过转到 管理 > 常规设置 > 分析范围 > 重复排除 并排除包含您的实体的文件夹 - 例如/实体/

【讨论】:

  • 有没有可以在 pom.xml 中使用的属性,比如我们有 <sonar.coverage.exclusions> 用于从覆盖范围中排除实体
【解决方案2】:

我想说你的选择是从 Market 和 MarketDTO 中提取一个共同的祖先类,或者标记重复的块问题 Won't Fix。 (它们不是真正的误报,是吗?)

【讨论】:

  • 谢谢,这两个选项我都可以接受。还有一个问题,SonarQube 如何在访问器上定义此规则?如果两个 Java bean 完全不相关,但只是偶然有 3 个具有相同名称的字段(例如 id、name 等常见字段),它们是否仍被视为重复?
  • 它只是查看一行中重复标记的数量,而不注意任何语义(怎么可能?)
  • 我也这么认为。那么很可能会说两个类 PersonMarket 都只有三个字段 idname、status,他们的访问器在 SonarQube 眼中是重复的吗?如果不是,那么为什么 MarketMarketDTO 是?正如@chrylis 所说,在重复代码扫描中最好将访问器排除在外。
  • 如果你想讨论重复检测的原理,那么你应该在谷歌组(groups.google.com/forum/#!forum/sonarqube)上开一个帖子
猜你喜欢
  • 2020-08-12
  • 2020-12-29
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
相关资源
最近更新 更多