SonarQube - 声纳方式即使在代码库上没有修改,泄漏期间的覆盖也会失败

时间:2018-04-24 08:36:54

标签: sonarqube code-coverage azure-pipelines

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

有没有其他人经历过这个和/或任何人都可以解释逻辑,如果这确实是预期的行为? IMO,我预计在泄漏期间代码库没有修改时,泄漏期代码覆盖率检查不适用。

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

由于覆盖率泄漏而导致QG失败的分析摘要(覆盖百分比仍然相同) Quality Gate Overview with Coverage failure

当存在代码修改且这些特定修改具有100%代码覆盖率时,也会出现此问题 100% Coverage on New Code also fails

声纳质量门配置如下(默认配置): sonarway quality gate configuration

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

感谢有人能向我解释这种行为,因为它似乎与文档相反。

1 个答案:

答案 0 :(得分:1)

万一有人偶然发现了这个问题,事实证明这有点像鲱鱼!

与同事进行了很好的讨论之后,我们都同意将 Over Leak Period 设置为 coverage 的闸门条件始终是错误的闸门配置。

我错误地假设SonarQube方式是内置的默认方式,并且不可编辑。但是事实证明,该门实际上是可编辑的。 只读模式仅根据release notes从v7.0开始实施。因此,我们仍在调查导致配置错误的根本原因,但是我们可以确保它不是SonarQube documentation

的默认值和推荐的Gate

在上面发布的示例中,登机口抱怨额外的0.7%覆盖率低于最小40%错误级别。该条件本身按配置应用,但实际上应该不可能为覆盖启用泄漏时间。相反,应该使用新代码保护

一个简单的班轮解决方案: 如果使用覆盖率条件

,请确保“泄漏时间长” 设置为从不(和/或未选择)