基于本地TFS的Dotnet Core 2.0 SonarQube分析无结果求助
成功搞定Dotnet Core 2.0项目SonarQube分析的实操方案
我之前在和你完全一致的环境(TFS 2017.2 + SonarQube 6.7.1 LTS + SonarC# 6.8)下踩过同样的坑——SonarQube只显示文件没分析结果,后来用独立扫描器完美解决了,分享下我的实际操作步骤:
为什么原来的流程不行?
原来TFS集成的那套步骤(SonarQube分析准备→Dotnet构建→运行代码分析)对Dotnet Core 2.0的兼容性不太好,没办法正确收集编译后的代码指标,独立扫描器是专门针对.NET Core项目设计的,能精准处理相关数据。
调整后的构建定义步骤
把原来的三个步骤替换成以下顺序,每个步骤都用TFS的「命令行」任务来执行:
1. 启动SonarQube扫描会话
运行以下命令,替换成你自己的项目信息:
dotnet sonarscanner begin /k:"你的项目唯一Key" /n:"项目显示名称" /v:"当前构建版本号" /d:sonar.host.url="http://你的SonarQube服务器地址" /d:sonar.login="你的SonarQube访问令牌"
提示:如果你的SonarQube没开权限验证,可以去掉
/d:sonar.login参数;令牌需要在SonarQube后台的个人设置里生成。
2. 构建项目(+ 可选:运行单元测试生成覆盖率)
先正常构建项目,确保编译成功:
dotnet build "你的解决方案路径.sln" --configuration Release
如果有单元测试项目,建议加上测试步骤生成覆盖率报告,这样SonarQube能显示覆盖率数据:
dotnet test "你的测试项目路径.csproj" --configuration Release --collect:"XPlat Code Coverage"
3. 结束扫描并提交结果到SonarQube
运行结束命令,完成数据上传:
dotnet sonarscanner end /d:sonar.login="你的SonarQube访问令牌"
必看的注意事项
- 确保TFS构建代理机器上安装的是Dotnet Core 2.0.x版本的SDK,和项目依赖的版本完全匹配;
- SonarQube后台必须安装好SonarC# 6.8插件,安装后记得重启SonarQube服务;
- 构建过程中不能有编译错误,否则扫描器无法收集到有效的分析数据;
- 如果遇到权限报错,检查你的SonarQube令牌是否有该项目的分析权限(至少是「用户」角色)。
我按这个流程配置后,SonarQube门户就正常显示代码异味、复杂度、覆盖率等所有分析结果了,你可以照着试试。
内容的提问来源于stack exchange,提问作者b. o.
相关产品推荐
相关产品推荐

