代码覆盖率结果未使用 sonarqube 中的分支进行更新

Posted

技术标签:

【中文标题】代码覆盖率结果未使用 sonarqube 中的分支进行更新【英文标题】:Code coverage results not getting updated with Branching in sonarqube 【发布时间】:2018-10-12 19:06:26 【问题描述】:

我正在将 sonarqube 集成到 Jenkins 管道中。根据下面的文档,我已经使用 sonar-csharp 启用了带有 opencover 的 sonarqube 的代码覆盖 https://docs.sonarqube.org/pages/viewpage.action?pageId=6389770 我也在使用分支插件。 当我使用 /d:sonar.branch.name 和 /d:sonar.branch.target 启动 sonarqube 分析命令时,主分支上的覆盖率结果保持在 0%,特定分支上的覆盖率结果保持空白。当我删除 /d:sonar.branch.name 和 /d:sonar.branch.target 时,master 上的覆盖结果会更新为特定值,但代码选项卡中特定分支上的覆盖结果仍然为空白.不应该在特定分支中相应地更新代码覆盖率百分比,为什么我会在使用分支插件时看到这种行为差异。如果我遗漏了什么,请告诉我。以下是我正在使用的工具版本

SonarQube 服务器 6.7.2 声纳-C# 6.8.2.4717 开盖 - 4.6.519

我已经使用 opencover 和 Visual Studio 覆盖测试了该行为。 我试图通过在 sonarqube 分析期间启用详细日志记录来检查是否有任何错误,我确实看到覆盖率报告已由 sonarqube 导入和分析,但结果未显示在网页中。以下是我在成功和失败场景中看到的情况

INFO:传感器 C# 测试覆盖报告导入 [csharp] 信息:解析 OpenCover 报告 C:\agent\workspace\xxxx\xxxx\opencovertests.xml INFO:将此代码覆盖率报告添加到缓存以供以后重用:C:\agent\workspace\xxxxx\xxxx\opencovertests.xml 信息:传感器 C# 测试覆盖报告导入 [csharp](完成)|时间=183ms 信息:传感器零覆盖传感器 信息:传感器零覆盖传感器(完成)|时间=95ms 在 C:\agent\workspace\xxxx\xxxx.sonarqube\out.sonar\scanner-report 中生成的分析报告 873ms 上传分析报告 信息:分析成功

Blank Coverage

问候, 奇兰特

【问题讨论】:

【参考方案1】:

你的分公司叫什么名字?如果此名称与长寿命分支 (sonar.branch.longLivedBranches.regex) 对应的正则表达式不匹配,则看不到覆盖率数据是正常的。到目前为止,SonarQube 中的覆盖数据只能在 Master 和 Long-Live 分支上提供,而不是在短期分支上。

问候

【讨论】:

感谢亚历山大的回复。我拥有的分支是一个短暂的分支。正则表达式是 (branch|release)-.* 。是否有任何未来计划或更新时间框架以提供短期分支级别的代码覆盖率分析? @ChiranthRamaswamy 对长寿分支有用吗? @DenCowboy 如果您将分支创建为长期存在的分支,则可以。但是这种行为已经改变,即使在 SQ 版本 7.6 的短期分支上也可以获得覆盖结果【参考方案2】:

此功能似乎已根据https://community.sonarsource.com/t/sonarqube-7-4-released/3792 添加到 v7.4 中。背景是https://jira.sonarsource.com/browse/MMF-1118

【讨论】:

以上是关于代码覆盖率结果未使用 sonarqube 中的分支进行更新的主要内容,如果未能解决你的问题,请参考以下文章

Sonarqube 运行后未显示代码覆盖率

长期分支的 Sonarqube 分支结果未按预期显示

代码覆盖率的 SonarQube 增量分析

SonarQube代码覆盖率的增量分析

nUnit 的结果未显示在 SonarQube 中

如何将未覆盖的文件视为具有SonarQube通用覆盖XML的0覆盖?