直接在 Azure Pipelines 中可视化 .net 核心代码覆盖率

Visualize .net core code coverage directly in Azure Pipelines

我有一个 .net 核心项目,在 Azure DevOps 中设置了管道(YAML,多阶段)管道。我们在管道 运行 时间执行了一堆单元测试 - 一切都很好。

但是 - 我们想更深入地研究我们的代码覆盖率。所以我们已经像这样配置了我们的任务

- task: DotNetCoreCLI@2
  displayName: Run UnitTests
  enabled: true
  inputs:
    command: test
    projects: '**/PM.UnitTests.csproj'
    arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'

结果是这样

我们现在可以在管道结果中看到这一点:

此 .coverage 文件可以下载和分析,例如Visual Studio.

但是 - 我们真的很希望能够直接在 Azure Pipelines 中看到结果。我们有一个 Typescript 项目来执行此操作。结果是这样的:

遗憾的是,我一点也不清楚如何将其应用于 .net 核心项目。

Q1:是否有可能对 .net core 项目有相同的体验......以及如何?

此外 - 我们希望能够对用于计算代码覆盖率百分比的代码部分应用过滤。

问题 2:是否正确理解这是使用 .运行settings 文件完成的?

谢谢:-)

/杰斯珀

作为参考,这是我在测试 .net 核心解决方案中的完整 YAML 管道。解决方案非常简单 - .net 核心 class 库和 .net 核心测试 class 库

pool:
  vmImage: vs2017-win2016

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'd12c137f-dac4-4ea7-bc39-59bd2b784537'
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    projects: '**/*.csproj'
    arguments: --configuration $(BuildConfiguration) --no-restore
- task: DotNetCoreCLI@2
  displayName: Run UnitTests
  inputs:
    command: test
    projects: '**/Test.Coverage/Test.Coverage.csproj'
    arguments: '--configuration $(BuildConfiguration) --collect:"XPlat Code Coverage" '
- script: 'dotnet tool install -g dotnet-reportgenerator-globaltool  '
  displayName: 'Install dotnet-reportgenerator-globaltool'
- script: 'reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(build.sourcesdirectory) -reporttypes:"Cobertura"'
  displayName: 'Executes reportgenerator'
- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage from $(build.sourcesdirectory)/Cobertura.xml'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(build.sourcesdirectory)/Cobertura.xml'

您正在寻找的是一种可以根据覆盖率信息生成报告的工具。您正在寻找 ReportGenerator.

ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.

有很多使用 dotnet-reportgenerator-globaltool 用于 .NET Core 项目的示例。

您可能会发现此 Learn -> Usage page 有帮助。

Coverlet 也可能是您工具箱中的一个有趣补充。

您可以使用 dotnet-reportgenerator-globaltool 包生成 HTML 代码覆盖率报告。

这是一个例子:

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: '$(Parameters.TestProjects)'
    arguments: '--configuration $(BuildConfiguration) --collect:"XPlat Code Coverage" '

- script: 'dotnet tool install -g dotnet-reportgenerator-globaltool  '
  displayName: 'Command Line Script'

- script: 'reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(build.sourcesdirectory) -reporttypes:"Cobertura"'
  displayName: 'Command Line Script'

- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage from $(build.sourcesdirectory)/Cobertura.xml'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(build.sourcesdirectory)/Cobertura.xml'

结果: