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

SonarQube流水线扫描后,如何生成并发布Azure制品报告文件?

解决方案

1. 配置SonarQube生成本地JSON报告

在SonarQubePrepare@6任务的extraProperties中添加sonar.scanner.dumpReport=true,扫描完成后会在项目根目录的.scannerwork文件夹下生成report.json文件:

- task: SonarQubePrepare@6
  inputs:
    SonarQube: 'my-azure-sonar-connection'
    scannerMode: 'my-name'
    configMode: 'manual'
    cliProjectKey: 'my-cli'
    extraProperties: |
      sonar.tests.inclusions=**/*.test.ts
      sonar.exclusions=**/node_modules/*
      sonar.scanner.dumpReport=true  # 新增:开启本地JSON报告生成

2. 复制Sonar报告到制品 staging 目录

替换你之前错误的文件复制逻辑,直接复制生成的report.json到指定路径,还可按需重命名为sonar-report.json:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # 创建目标目录
      New-Item -ItemType Directory -Path "$(Build.ArtifactStagingDirectory)/report" -Force
      # 复制并重命名报告文件
      Copy-Item -Path "$(Build.SourcesDirectory)/.scannerwork/report.json" -Destination "$(Build.ArtifactStagingDirectory)/report/sonar-report.json" -Force

3. 发布制品

修改发布任务,指向正确的报告路径,自定义制品名称便于识别:

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)/report'
    artifactName: sonar-scan-report

完整流水线示例

整合后的完整jobs-sonar-scan.yaml:

jobs:
  - job: SonarAnalysis
    displayName: 'Sonar Analysis'
    steps:
      # Prepare Analysis Configuration task
      - task: SonarQubePrepare@6
        inputs:
          SonarQube: 'my-azure-sonar-connection'
          scannerMode: 'my-name'
          configMode: 'manual'
          cliProjectKey: 'my-cli'
          extraProperties: |
            sonar.tests.inclusions=**/*.test.ts
            sonar.exclusions=**/node_modules/*
            sonar.scanner.dumpReport=true  # 开启本地报告生成
      
      # Run Code Analysis task
      - task: SonarQubeAnalyze@6
        inputs:
          jdkVersion: 'JAVA_HOME_17_X64'
      
      # Publish Quality Gate Result task
      - task: SonarQubePublish@6
        inputs:
          pollingTimeoutSec: '300'

      # 创建报告目录并复制Sonar JSON报告
      - task: PowerShell@2
        inputs:
          targetType: 'inline'
          script: |
            New-Item -ItemType Directory -Path "$(Build.ArtifactStagingDirectory)/report" -Force
            Copy-Item -Path "$(Build.SourcesDirectory)/.scannerwork/report.json" -Destination "$(Build.ArtifactStagingDirectory)/report/sonar-report.json" -Force

      # 发布Sonar报告制品
      - task: PublishBuildArtifacts@1
        inputs:
          pathToPublish: '$(Build.ArtifactStagingDirectory)/report'
          artifactName: sonar-scan-report

验证方式

流水线运行完成后,在Azure DevOps流水线摘要页面的“制品”区域,点击sonar-scan-report即可下载到sonar-report.json文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:40:10