【问题标题】:prevent sonar qube false positive from overwrite防止声纳 qube 误报覆盖
【发布时间】:2021-09-12 08:53:55
【问题描述】:

我已经在我的项目中标记了一些问题,让我们在主分支中将其标记为 sonarqube 上的误报。现在我的问题更少了,这非常好。

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

【问题讨论】:

    标签: sonarqube static-analysis false-positive


    【解决方案1】:

    来自documentation:

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

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

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

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

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

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

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

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

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

    这都是指开发人员版及更高版本中提供的分支支持。 AFAIK 项目之间没有问题同步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2012-07-18
      • 2013-10-13
      • 2018-05-05
      • 2019-11-01
      • 2013-06-03
      相关资源
      最近更新 更多