直接在 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'
结果:
我有一个 .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'
结果: