SonarQube - 即使代码库没有发生任何修改,Sonar way Coverage over leak period 也会失败

SonarQube - Sonar way Coverage over leak period fails even when no modifications occur on codebase

也许这是我在理解质量门方面的无知,但由于在通过 VSTS 构建使用 sonarway 代码质量门时默认的 40% 覆盖率泄漏期,我有一个失败的质量门。问题是在初始分析和最新分析之间没有对代码进行修改,因此参考文档中的隐喻。厨房里没有额外的水。因此我没有看到这样做的原因失败的标准。

有没有其他人经历过这种情况 and/or 如果这确实是预期的行为,谁能解释其中的逻辑? IMO,如果在泄漏期间代码库没有发生任何修改,我希望泄漏期间代码覆盖率检查不适用。

我的SQ分析是通过VSTS执行的,SQ的版本是6.7.3。

由于覆盖率泄漏导致 QG 失败的分析摘要(覆盖率百分比仍然相同)

当有代码修改并且这些特定修改具有 100% 的代码覆盖率时,也会出现此问题

sonarway质量门配置如下(默认配置):

根据要求,我还创建了一个简单的演示项目,它也演示了行为(运行 使用 SQ 分析构建,第二个构建由于泄漏期间的 0.0% 覆盖率而失败,尽管没有新代码).可以找到示例项目 here

如果有人能向我解释这种行为,我将不胜感激,因为它似乎与文档相悖。

万一有人无意中发现了这个问题,原来这是一个转移注意力的问题!

在与同事进行一些良好的讨论之后,我们都同意 覆盖率 门控条件 Over Leak Period 设置为始终是不正确的门配置。

我错误地认为 SonarQube 方式是内置默认方式并且不可编辑。然而事实证明,门实际上是可编辑的。 只读 模式仅根据 release notes. So the root cause of our misconfiguration is still under investigation but we can be sure that it's not the default and recommended Gate as per SonarQube documentation

从 v7.0 开始实施

在上面发布的示例中,门控抱怨额外的 0.7% 覆盖率低于最低 40% 的错误水平。条件本身按配置应用,但实际上不可能为覆盖启用泄漏期。相反,应该使用新代码的覆盖率

所以简单的一个线性解决方案: 如果使用 Coverage 条件

,请确保 Over Leak Period 设置为从不(and/or 未选择)