“发布代码覆盖率结果”任务

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

在生成管道中使用此任务将运行测试时生成的代码覆盖率结果发布到 Azure Pipelines 或 TFS,以获取覆盖率报告。 该任务支持常用覆盖率结果格式,如CoberturaJaCoCo。

此任务只能在生成管道中使用,在发布管道中不受支持。

测试、Visual Studio.NETCore、Ant、Maven、Gulp、Grunt 等任务也提供了将代码覆盖率数据发布到管道的选项。 如果使用这些任务,则管道中不需要单独的"发布 代码覆盖率结果 "任务。

需求

若要生成 HTML 代码覆盖率报告,需要在代理上安装 dotnet 2.0.0 或更高版本。 dotnet 文件夹需在环境路径中。 如果有多个包含 dotnet 的文件夹,则版本为 2.0.0 的文件夹必须先于路径列表中的其他任何文件夹。

YAML 代码片段

# Publish code coverage results
# Publish Cobertura or JaCoCo code coverage results from a build
- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: 'JaCoCo' # Available options: 'JaCoCo', 'Cobertura'
    summaryFileLocation: 
    #pathToSources: # Optional
    #reportDirectory: # Optional
    #additionalCodeCoverageFiles: # Optional
    #failIfCoverageEmpty: false # Optional

codeCoverageToolsummaryFileLocation参数是必需的。

若要使用 YAML 发布 JavaScript 和 JavaScript 的代码覆盖率结果,请参阅这些主题的"生态系统"部分中的 JavaScript, 其中还包括其他语言的示例。

若要查看使用 Cobertura 发布代码覆盖率的示例,请参阅 有关代码覆盖率 的此部分。

自变量

参数 说明
codeCoverageTool
代码覆盖率工具
(必需) 默认使用 JaCoCo。 可用选项:JaCoCo、Cobertura。
summaryFileLocation
摘要文件的路径
() 包含代码覆盖率统计信息(如行、方法和类覆盖率)的摘要文件的必需路径。 多个摘要文件将合并到单个报表。 该值可能包含微型匹配模式。
例如: $(System.DefaultWorkingDirectory)/MyApp/**/site/cobertura/coverage.xml
pathToSources
源文件的路径
(覆盖率 XML) 不包含源文件的绝对路径时,需要可选的"指向源文件的路径"。
例如,JaCoCo 报表不使用绝对路径,在发布 Java 应用的 JaCoCo 覆盖率时,模式类似于 $(System.DefaultWorkingDirectory)/MyApp/src/main/java/
如果在 docker 容器中运行测试,也需要此输入。 此输入应指向主机上源文件的绝对路径。
例如: $(System.DefaultWorkingDirectory)/MyApp/
reportDirectory
报表目录
(代码) HTML 报表目录的可选路径。 报表目录已发布,供以后作为生成项目查看。 该值可能包含微型匹配模式。 例如: $(System.DefaultWorkingDirectory)/MyApp/**/site/cobertura
additionalCodeCoverageFiles
其他文件
(可选) 文件路径模式,指定要作为生成项目发布的其他任何代码覆盖率文件。 该值可能包含微型匹配模式。 例如: $(System.DefaultWorkingDirectory)/**/*.exec
failIfCoverageEmpty
如果缺少代码覆盖率结果,则失败
(可选) 如果代码覆盖率未生成任何要发布的结果,任务失败。

Docker

对于使用 docker 的应用,生成和测试可能在容器中运行,从而在容器中生成代码覆盖率结果。 为了将结果发布到管道,生成的项目应可用于"发布 代码覆盖率结果" 任务。 有关参考,可以在 Docker 的生成、测试和发布结果的 Docker 文件 部分下查看发布测试结果的 类似示例

查看结果

若要查看管道中的代码覆盖率结果,请参阅 查看代码覆盖率结果

开放源代码

此任务是 GitHub 上的开放源代码。 欢迎提供反馈和建议。

常见问题解答

当多个文件作为任务输入提供或在管道中使用多个任务时,代码覆盖率数据是否合并?

目前,此任务提供的代码覆盖率报告功能有限,不会合并覆盖率数据。 如果向任务提供多个文件作为输入,则仅考虑第一个匹配项。 如果在管道中使用多个发布代码覆盖率任务,则会显示最后一个任务的摘要和报表。 将忽略以前上传的任何数据。

帮助和支持

已知问题

发布代码覆盖率结果任务生成并发布 HTML 报表,该报表是一组从主文件链接的 HTML index.html 文件。 如果"代码覆盖率"选项卡 无法 显示代码覆盖率报告,请检查index.html文件的大小是否接近或大于 7 MB。 完成以下步骤以检查文件的大小。 然后,如果文件大小接近或大于 7 MB,可以使用以下解决方法来查看覆盖率报告:

  1. 选择"生成 摘要"选项卡 ,然后选择已发布 的链接

    Screenshot that shows the published link in the Summary pane.

  2. 在"代码覆盖率"Report_"项目旁边,选择"下载项目":

    Screenshot that shows the Download artifacts link for the code coverage report under Artifacts.

  3. 下载代码覆盖率报表后,提取.zip文件。

  4. 在代码覆盖率报告中,检查index.html的大小,以帮助确定文件大小是否导致了此处所述的问题。

  5. index.html 打开代码覆盖率报表。