在 Azure DevOps 中设置 Go 的代码覆盖率

Setup code coverage for Go in Azure DevOps

我不清楚我的 Golang 项目在 Azure DevOps 中的代码覆盖率是如何工作的。 我的专业是看到这样的东西:

缺失代码覆盖率

我很困惑,因为我看到了这个提示 "Setup code coverage":

但在选项卡 "Code Coverage" 中是生成的 html 报告:

任务中出现警告 "Publish code coverage results"

我在任务中收到这个警告 "Publish code coverage results"

##[warning]Ignoring coverage report directory with Html content as we are auto-generating Html content

但是当我使用 disable.coverage.autogenerate: 'false' 禁用 html 生成时,选项卡 "Code Coverage" 下不会显示任何报告,只有消息 "Code coverage report cannot be rendered as report HTML was not found. Please verify that "Report Directory" 包含 HTML 发布代码覆盖率时指定了报告。"

Azure 管道

这是我的管道:

trigger: 
 - master

pool:
   vmImage: 'ubuntu-latest'

variables:
  GOBIN:  '$(GOPATH)/bin'
  GOPATH: '$(system.defaultWorkingDirectory)/gopath'
  disable.coverage.autogenerate: 'false'

steps: 

- script: |
    echo '##vso[task.prependpath]$(GOBIN)'
    echo '##vso[task.prependpath]$(GOROOT)/bin'

- task: GoTool@0
  inputs:
    version: '1.14.2'
- task: Go@0
  inputs:
    command: 'get'
    arguments: '-d ./...'
    workingDirectory: '$(System.DefaultWorkingDirectory)'

- script: |
    go get github.com/jstemmer/go-junit-report
    go get github.com/axw/gocov/gocov
    go get github.com/AlekSi/gocov-xml
    go test -v -coverprofile=coverage.txt -covermode count ./... 2>&1 | go-junit-report > report.xml
    gocov convert coverage.txt > coverage.json
    gocov-xml < coverage.json > coverage.xml
    mkdir coverage
  workingDirectory: '$(System.DefaultWorkingDirectory)'
  displayName: 'Run unit test'

- task: PublishTestResults@2
  inputs:
    testRunner: JUnit
    testResultsFiles: $(System.DefaultWorkingDirectory)/**/report.xml

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura 
    pathToSources: '$(System.DefaultWorkingDirectory)'
    summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml
    reportDirectory: $(System.DefaultWorkingDirectory)/**/coverage
    failIfCoverageEmpty: true

完整日志:https://gist.githubusercontent.com/dhcgn/682dd6027d8d0703cb4dc6d5ae2fbead/raw/9d2bb96d1d8a0721335d56a121a5eed254ac014f/pipeline.log

您希望在构建摘要中看到的代码覆盖率报告是旧构建管道 UI 页面。

现在 Azure devops 服务已经实现了新的 multi-stage pipelines UI 页面。代码覆盖率报告已移至 代码覆盖率 选项卡,如您现在所见。

您希望在上面的屏幕截图中看到的构建摘要页面不再可用,因为允许切换回旧构建管道的此功能切换 UI 页面已被删除。参见 here

但是,您仍然可以在 Azure DevOps Server 2019/TFS 2018 /TFS 2017 中看到旧管道 UI 页面。