升级SonarQube扩展后VS2015环境下无coveragexml文件问题
解决SonarQube扩展v4.1在VS2015 TFS代理上无法生成codecoverage.xml的问题
结合你给出的环境(TFS 2017 Update-2、VS2015、VSTS Task 3.2.0、SonarQube 5.6.6 LTS)和症状,我来分享下实际排查和解决的思路:
问题根源
SonarQube Scanner for MSBuild v4.x对VS版本的代码覆盖率工具逻辑做了调整,VS2017+使用的是新版覆盖率收集机制,而VS2015依赖的旧版CodeCoverage.exe工具没有被v4.1的扩展正确适配,导致在End Analysis阶段找不到生成的codecoverage.xml文件。
可行解决方案
1. 完善临时参数+手动转换覆盖率文件
你提到的添加/d:sonar.cs.v...参数是正确方向,但需要配合完整流程确保文件生成:
- 在Scanner for MSBuild - Begin Analysis任务的「Additional Settings」中,明确指定覆盖率报告路径:
/d:sonar.cs.vscoveragexml.reportsPaths=$(Agent.TempDirectory)\**\*.coveragexml - 在前置的Visual Studio Test任务中,启用代码覆盖率并指定输出目录:
在「Arguments」里添加:/EnableCodeCoverage /logger:trx /resultsDirectory:$(Agent.TempDirectory) - 添加一个PowerShell脚本任务(放在测试任务之后,Sonar End任务之前),将VS2015生成的
.coverage文件转换为SonarQube识别的.coveragexml:& "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:$(Agent.TempDirectory)\codecoverage.xml $(Agent.TempDirectory)\*.coverage
2. 检查VS2015组件完整性
确认TFS代理所在机器的VS2015是否安装了Dynamic Code Coverage Tools:
- 打开控制面板 → 程序和功能 → 找到Visual Studio 2015 → 点击「更改」
- 在安装界面中,展开「Team Foundation Server Build Tools」,勾选「Dynamic Code Coverage Tools」并完成安装
3. 版本回退(可选)
如果你的构建环境以VS2015为主,且不想修改流程,可以暂时回退到SonarQube扩展v4.0.2,该版本对VS2015的覆盖率工具兼容性更好,直到后续版本修复该问题。
注意事项
- 确保TFS代理服务账号有访问VS2015工具目录和临时目录的权限
- 构建过程中不要清理
$(Agent.TempDirectory),避免覆盖率文件被提前删除
内容的提问来源于stack exchange,提问作者PGGM-IT4IT
相关产品推荐
相关产品推荐

