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

Azure DevOps流水线配置SonarCloud代码覆盖率分析失败及仅扫描测试项目问题求助

Azure DevOps流水线配置SonarCloud代码覆盖率分析失败及仅扫描测试项目问题求助

各位好,我目前正在为我的.NET微服务搭建Azure DevOps流水线,在集成SonarCloud做代码质量分析时遇到了两个棘手的问题,翻了SonarCloud的官方文档也没找到解决办法,想在这里求助大家:


问题1:代码覆盖率报告无法同步到SonarCloud

  • 背景:我原本用Cobertura生成的覆盖率报告在Azure DevOps里能正常展示,但发现SonarCloud不支持直接关联Cobertura格式,所以改成同时生成Cobertura和OpenCover两种格式的报告。
  • 现状:从流水线日志里能看到两个格式的报告都成功生成了(日志内容见下文),但SonarCloud始终没有读取到OpenCover的覆盖率数据。

问题2:SonarCloud仅分析测试项目,主业务代码未被扫描

  • 现状:运行SonarCloud分析后,发现它只扫描了我的测试项目,实际的主业务代码完全没被纳入分析范围,这完全达不到我做代码质量检查的目的。

我的Azure DevOps流水线配置(YAML)

trigger:
- dev
- main

pool:
  vmImage: ubuntu-latest

jobs:
- job: check_code_quality
  steps:
  - task: SonarCloudPrepare@1
    displayName: 'Setup Sonar Cloud'
    inputs:
      SonarCloud: 'SonarCloud'
      organization: '***'
      scannerMode: 'MSBuild'
      projectKey: '***'
      projectName: '****'
      extraProperties: |
        sonar.exclusions=**/obj/**,**/*.dll
        sonar.cs.vstest.reportsPaths=$(Agent.TempDirectory)/*.trx
        sonar.cs.opencover.reportsPaths=$(Agent.TempDirectory)/**/coverage.opencover.xml

  - task: DotNetCoreCLI@2
    displayName: 'Build main code'
    inputs:
      command: build
      projects: '**/*.csproj'
      arguments: '--configuration Release'

  - task: DotNetCoreCLI@2
    displayName: 'Run unit tests'
    continueOnError: true
    inputs:
      command: 'test'
      projects: '**/*[Tt]est*/*.csproj'
      testRunTitle: 'Backend Unit Testing'
      arguments: '--configuration Release --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover'
      publishTestResults: true

  - task: PublishCodeCoverageResults@1
    displayName: 'Publish code coverage report'
    inputs:
      codeCoverageTool: 'Cobertura'
      summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'

  - task: SonarCloudAnalyze@1
    displayName: 'Run Sonar Analysis'

  - task: SonarCloudPublish@1
    displayName: 'Publish Sonar Results'
    inputs:
      pollingTimeoutSec: '300'

流水线日志中显示的覆盖率文件信息

Attachments:
/home/vsts/work/_temp/111bef07-6e19-43fe-a689-7597bc24dda3/coverage.cobertura.xml
/home/vsts/work/_temp/111bef07-6e19-43fe-a689-7597bc24dda3/coverage.opencover.xml


已经折腾好一阵了,实在找不到问题出在哪,麻烦各位帮忙看看配置哪里有问题,或者有没有其他办法解决这两个问题?谢谢大家!

备注:内容来源于stack exchange,提问作者Jbtf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:00:28