如何为现有DotNet项目配置SonarQube分析及代码覆盖率、单元测试
.NET项目配置SonarQube展示代码覆盖率与单元测试结果
前置准备
- 全局安装SonarScanner工具:
dotnet tool install --global dotnet-sonarscanner - 给测试项目添加代码覆盖率收集包:在测试项目的
.csproj文件中添加引用<PackageReference Include="coverlet.collector" Version="6.0.0" PrivateAssets="all" /> - 确保SonarQube服务器正常运行,已创建项目并获取到项目密钥和访问令牌
完整执行流程
1. 初始化SonarScanner并配置报告路径
dotnet sonarscanner begin /k:"你的SonarQube项目密钥" \ /d:sonar.host.url="http://你的SonarQube服务器地址" \ /d:sonar.login="你的SonarQube访问令牌" \ /d:sonar.cs.vstest.reportsPaths="**/*.trx" \ /d:sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml"
sonar.cs.vstest.reportsPaths:指定单元测试结果文件(.trx)的搜索路径sonar.cs.opencover.reportsPaths:指定代码覆盖率报告(opencover格式)的搜索路径
2. 构建项目
dotnet build --configuration Release
3. 执行单元测试并生成覆盖率报告
dotnet test --configuration Release \ --collect:"XPlat Code Coverage" \ --results-directory ./TestResults \ /p:CoverletOutputFormat=opencover
--collect:"XPlat Code Coverage":触发coverlet收集代码覆盖率数据/p:CoverletOutputFormat=opencover:生成SonarQube兼容的opencover格式报告--results-directory:统一指定测试结果和覆盖率报告的输出目录,方便后续扫描
4. 结束分析并上传数据到SonarQube
dotnet sonarscanner end /d:sonar.login="你的SonarQube访问令牌"
关键注意事项
- 如果是.NET Framework项目,建议使用
OpenCover工具生成覆盖率报告,对应参数改为sonar.cs.opencover.reportsPaths指向OpenCover输出的.xml文件 - 若项目目录结构特殊,需调整
**/*.trx和**/coverage.opencover.xml的路径,确保能匹配到实际生成的文件 - 执行命令前,建议清理之前的测试结果目录(
TestResults),避免旧数据干扰
内容的提问来源于stack exchange,提问作者Sasf54
相关产品推荐
相关产品推荐

