SonarQube 8.9.2与TFS 2015构建能否集成?运行步骤报错缺少MSBuild Runner文件
SonarQube 8.9.2 与 TFS 2015 Update 4 集成方案
问题根因
你遇到的报错属于版本兼容性导致的路径不匹配问题,并非二者无法集成:
- TFS 2015 内置的 SonarQube 构建步骤适配的是 SonarQube 7.x 及更早版本,当时 C# 插件为独立安装模式,对应 MSBuild Runner 静态资源路径为
/static/csharp/ - SonarQube 8.9 开始 C# 插件调整为内置核心组件,对应的静态资源路径发生变更,旧版 TFS 构建步骤无法匹配新路径,因此会抛出文件缺失的报错
- SonarQube 8.9 的 ALM 配置模块仅支持 Azure DevOps 及 TFS 2017 及更高版本,无 TFS 2015 配置入口属于正常情况
可行集成方案(手动脚本扫描,完全兼容)
不需要依赖 TFS 内置的 SonarQube 步骤,通过自定义批处理脚本即可完成扫描,操作步骤如下:
前置准备
下载适配 SonarQube 8.9.2 的 SonarScanner for MSBuild 5.x 版本,解压后放到所有构建代理可访问的固定路径(例如 C:\Tools\SonarScanner.MSBuild\),也可以将解压包上传到项目代码库的固定目录,构建时直接调用。
构建流程调整
删除原有内置的 SonarQube 相关步骤,替换为3个自定义步骤:
- 扫描预处理步骤(批处理/命令行)
执行命令:
C:\Tools\SonarScanner.MSBuild\SonarScanner.MSBuild.exe begin /k:"你的SonarQube项目Key" /d:sonar.host.url="你的SonarQube服务地址" /d:sonar.login="你的SonarQube访问令牌"
需自行替换命令中的占位参数,访问令牌可在 SonarQube 个人账户中生成,需分配项目扫描权限。
2. 正常构建步骤
保留原有 TFS 中的 MSBuild 构建步骤,参数无需做任何调整。
3. 扫描提交步骤(批处理/命令行)
执行命令:
C:\Tools\SonarScanner.MSBuild\SonarScanner.MSBuild.exe end /d:sonar.login="你的SonarQube访问令牌"
额外配置说明
- 若需要上报单元测试覆盖率,可在预处理命令中添加对应参数,例如使用 OpenCover 生成覆盖率报告的场景,添加参数
/d:sonar.cs.opencover.reportsPaths="你的覆盖率报告本地路径"即可 - 构建代理需提前安装项目编译所需的.NET 环境,保证 MSBuild 可正常调用
内容的提问来源于stack exchange,提问作者Shay Vilk
相关产品推荐
相关产品推荐

