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

Azure DevOps Linux代理上.Net项目SonarCloud代码覆盖率报告失效

解决Azure DevOps Linux代理下SonarCloud无法获取代码覆盖率的问题

核心问题是Linux环境中,Azure DevOps默认代码覆盖率收集器生成的报告格式、路径与SonarCloud的默认预期不匹配,需要手动生成兼容的覆盖率报告并明确指定给SonarCloud。以下是具体修改方案:

1. 修改测试任务,生成SonarCloud兼容的覆盖率报告

替换原有--collect "Code Coverage"参数,改用coverlet生成opencover格式的报告(SonarCloud原生支持),同时指定统一的输出路径:

单元测试任务修改后:

- task: DotNetCoreCLI@2
  displayName: Run Unit Tests
  inputs:
    command: 'test'
    arguments: '--no-build --configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=$(Build.SourcesDirectory)/coverage/unit/'
    projects: 'src/PDO.Unit.Tests/PDO.Unit.Tests.csproj'
    testRunTitle: 'Net Core Tests'

集成测试任务修改后:

- task: DotNetCoreCLI@2
  displayName: Run Integration Tests
  inputs:
    command: 'test'
    arguments: '--no-build --configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=$(Build.SourcesDirectory)/coverage/integration/'
    projects: 'src/PDO.Integration.Tests/PDO.Integration.Tests.csproj'
    testRunTitle: 'Net Core Tests'
  env:
    TestSettings:ConnectionStringFormat: $(TestSettings:ConnectionStringFormat)

2. 在SonarCloudPrepare任务中添加覆盖率报告路径配置

更新SonarCloudPrepare@1任务,通过extraProperties明确告诉SonarCloud去哪里找覆盖率报告:

- task: SonarCloudPrepare@1
  displayName: 'Prepare analysis on SonarCloud'
  inputs:
    SonarCloud: 'SonarCloud'
    organization: '***'
    scannerMode: 'CLI'
    configMode: 'manual'
    cliProjectKey: '***'
    cliProjectName: '***'
    cliSources: '.'
    extraProperties: |
      sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/coverage/**/coverage.opencover.xml

修改说明

  • 采用coverlet生成opencover格式报告,规避了Linux与Windows平台下默认覆盖率报告的格式差异;
  • 统一指定报告输出目录,配合SonarCloud的通配符路径匹配,确保所有测试生成的报告都能被扫描到;
  • 无需额外安装coverlet,DotNetCoreCLI的test命令会自动引用coverlet.msbuild包完成报告生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:37:45