【发布时间】:2021-09-12 08:53:55
【问题描述】:
我已经在我的项目中标记了一些问题,让我们在主分支中将其标记为 sonarqube 上的误报。现在我的问题更少了,这非常好。
我的问题是:这种状态是否会永远存在,或者在某些情况下,我作为误报解决的问题会被覆盖,例如当我进行重构或部署具有相同快照名称的新功能分支时?我不想一次又一次地解决同样的问题。
【问题讨论】:
标签: sonarqube static-analysis false-positive
我已经在我的项目中标记了一些问题,让我们在主分支中将其标记为 sonarqube 上的误报。现在我的问题更少了,这非常好。
我的问题是:这种状态是否会永远存在,或者在某些情况下,我作为误报解决的问题会被覆盖,例如当我进行重构或部署具有相同快照名称的新功能分支时?我不想一次又一次地解决同样的问题。
【问题讨论】:
标签: sonarqube static-analysis false-positive
如果我在分支中将问题标记为“无法修复”或“误报”怎么办?
在创建拉取请求并将拉取请求合并到主分支时,它将被复制。
如果您使用参考分支新代码定义,参考分支中来自特性分支的问题会自动从特性分支继承其属性(包括“不会修复”和“误报”解决方案)。
对于后续分析,即使在某些限制范围内进行重构,也应保留该状态。 documentation 说:
为了确定问题的创建日期,在每次分析期间执行算法以确定问题是新问题还是以前存在的问题。该算法依赖于报告问题的行的内容哈希(不包括空格)。对于多行问题,使用第一行的哈希。对于每个文件(在检测到文件重命名之后),该算法从先前分析中获取问题的基本列表,并尝试将这些问题与新分析报告的原始问题列表进行匹配。该算法首先尝试使用最强的证据进行匹配,然后回退到较弱的启发式。
- 如果问题是在相同的规则上,具有相同的行号和相同的行哈希(但不一定具有相同的消息)> MATCH
- 检测文件内的块移动,然后如果问题在同一(已移动)行和同一规则上(但不一定具有相同的消息)> MATCH
- 在相同的规则上,具有相同的消息和相同的行哈希(但不一定具有相同的行)> MATCH
- 在相同的规则上,具有相同的消息和相同的行号(但不一定具有相同的行哈希)> MATCH
- 在相同的规则和相同的行哈希(但不同的消息和不同的行)> MATCH
- 是否有匹配的 CLOSED 问题 > MATCH 并重新打开
不匹配的“基础”问题已解决。
无与伦比的“原始”问题是新的。
特别是在重构时,如果您在同一行更改行内容,或移动一行而不更改其内容,SonarQube 应该匹配已经存在的问题,因此保留您的解决方案。
这都是指开发人员版及更高版本中提供的分支支持。 AFAIK 项目之间没有问题同步。
【讨论】: