防止声纳 qube 误报覆盖

问题描述

我在我的项目中标记了一些问题,可以在 master-branch 中说在 sonarqube 上为误报。现在我的问题减少了,这很好。

我的问题是:这种状态会永远存在,还是在某些情况下,我解决为误报的问题将被覆盖,例如在我进行重构或部署具有相同快照名称的新功能分支时?我不想一次又一次地解决同样的问题。

解决方法

来自documentation

如果我在分支中将问题标记为“无法修复”或“误报”怎么办?

在创建拉取请求并将拉取请求合并到主分支时,它将被复制。

如果您使用参考分支新代码定义,来自功能分支的参考分支中的问题会自动从功能分支继承其属性(包括“不会修复”和“误报”解决方案)。

对于后续分析,即使在某些限制内重构,也应保留状态。 documentation 说:

为了确定问题的创建日期,在每次分析期间都会执行一种算法,以确定问题是新问题还是以前存在的问题。该算法依赖于报告问题所在行的内容哈希(不包括空格)。对于多行问题,使用第一行的哈希值。对于每个文件(在检测到文件重命名之后),该算法从之前的分析中获取问题的基本列表,并尝试将这些问题与新分析报告的原始问题列表进行匹配。该算法首先尝试使用最强的证据进行匹配,然后回退到较弱的启发式。

  • 如果问题在相同的规则上,具有相同的行号和相同的行哈希(但不一定具有相同的消息)> MATCH
  • 检测文件内的块移动,然后如果问题出在同一(移动)行和同一规则上(但不一定具有相同的消息)> MATCH
  • 在相同的规则下,具有相同的消息和相同的行哈希(但不一定具有相同的行)> MATCH
  • 在相同的规则下,具有相同的消息和相同的行号(但不一定具有相同的行哈希)> MATCH
  • 在相同的规则和相同的行哈希(但不是相同的消息和不同的行)> MATCH
  • 是否有匹配的已关闭问题 > 匹配并重新打开

不匹配的“基本”问题已解决。

无与伦比的“原始”问题是新问题。

特别是,在重构时,如果您在同一行上更改行内容,或移动一行而不更改其内容,SonarQube 应该匹配已经存在的问题,从而保持您的解决方案。

这都是指 Developer Edition 及更高版本中可用的分支支持。 AFAIK 项目之间没有同步问题。