You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube 6.7升级后无法记录MSTest代码覆盖率求助

解决SonarQube 6.7 + TFS插件4.0升级后MSTest覆盖率无法记录的问题

我之前碰到过完全一样的问题——升级SonarQube和TFS插件后,MSTest覆盖率的处理逻辑变了,而你提到的缺少.cov文件正是核心症结所在。下面是一步步的解决方法:

  • 确认插件版本兼容性
    首先要保证SonarC#插件版本和SonarQube 6.7、TFS插件4.0匹配。SonarQube 6.7对应的SonarC#推荐版本在7.10到7.14之间,版本不匹配很容易导致覆盖率解析失败。

  • 手动将.coverage转换为.cov文件
    升级后的插件不再自动把MSTest生成的.coverage文件转换成SonarQube能识别的.cov格式。你需要在TFS构建流程里,在SonarQube分析步骤之前添加一个命令行步骤,执行以下命令(根据你的Visual Studio版本调整路径):

    # 以VS2017企业版为例,其他版本请修改对应路径
    "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:$(Build.SourcesDirectory)\coverage.cov "$(Agent.TempDirectory)\*.coverage"
    

    注意要确认.coverage文件的实际存储路径,通常在代理临时目录或构建制品文件夹里。

  • 配置SonarQube分析参数
    在TFS的SonarQube开始分析步骤中,添加额外参数,指定.cov文件的路径:

    /d:sonar.cs.vscoverage.reportsPaths=$(Build.SourcesDirectory)\coverage.cov
    

    这样SonarQube在分析时就会主动读取这个.cov文件,解析覆盖率数据。

  • 检查构建步骤顺序
    确保你的流水线顺序是这样的:

    1. 运行MSTest生成.trx和.coverage文件
    2. 用上面的命令把.coverage转换成.cov文件
    3. 执行SonarQube分析
      如果步骤顺序错了,SonarQube会在.cov文件生成前就运行,自然拿不到覆盖率数据。
  • 为什么DotCover能正常工作
    DotCover生成的覆盖率报告格式(比如XML)是SonarQube原生支持的,不需要额外转换步骤,所以升级后依然能被正常识别。

内容的提问来源于stack exchange,提问作者samdinesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:25:22