PublishCodeCoverageResults@2 如何在 Azure DevOps 上与 reportgenerator@5 配合使用?
当reportgenerator@5 与PublishCodeCoverageResults@2 一起使用时,Azure DevOps 上的“代码覆盖率”选项卡不 显示测试报告。这是一个例子:
- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/*.Tests.csproj'
arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage;Format=json,cobertura,lcov,teamcity,opencover" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=json,cobertura,lcov,teamcity,opencover'
publishTestResults: true
- task: reportgenerator@5
inputs:
reports: $(Agent.TempDirectory)/**/coverage.cobertura.xml
targetdir: $(Pipeline.Workspace)/coverlet
reporttypes: Cobertura
verbosity: Verbose
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: $(Pipeline.Workspace)/coverlet/Cobertura.xml
但是,如果我将 PublishCodeCoverageResults@2 替换为 PublishCodeCoverageResults@1,Azure DevOps 上的“代码覆盖率”选项卡确实会显示该报告。这是一个例子:
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: $(Pipeline.Workspace)/coverlet/Cobertura.xml
如何让 PublishCodeCoverageResults@2 与 reportgenerator@5 配合使用?
PublishCodeCoverageResults@2
与
reportgenerator@5
一起使用时,代码覆盖率报告:当我将
PublishCodeCoverageResults@1
与
reportgenerator@5
一起使用时,代码覆盖率报告:目前,
PublishCodeCoverageResults@2
不支持分支和方法覆盖,并且没有每个类的详细信息页面。根据官方博客中的评论,
V1 和 V2 之间当前的差距(缺少基于行和分支的覆盖)是因为 V2 内部不使用报告生成器。较大存储库的报告生成器存在问题,这是放弃它的原因之一。要在管道中使用发布代码覆盖率结果 v2 任务,请使用 dotnet 7.0.x 任务作为管道中的先决条件。在发布代码覆盖率 v2 任务之前使用 dotnet core 任务。详细信息请参阅
备注。
# Dotnet core sdk task 7.0.x
- task: UseDotNet@2
displayName: 'Use .NET Core sdk 7.0.x'
inputs:
version: 7.0.x