TeamCity On-Premises 2024.03 Help

JaCoCo

TeamCity 支持 JaCoCo,这是一种 Java 代码覆盖工具,让您可以衡量一组广泛的覆盖指标和代码复杂性。

JaCoCo 可用于以下构建运行程序: AntIntelliJ IDEA ProjectGradleMaven

启用 JaCoco 覆盖率

TeamCity 支持 Java 代理覆盖模式,让您可以在不修改构建脚本或二进制文件的情况下收集覆盖率。 无需额外的构建步骤 — 只需在运行测试的构建步骤中选择 JaCoCo 覆盖率:

  1. 代码覆盖率 部分,从 选择覆盖率运行器 下拉菜单中选择 JaCoCo 作为覆盖工具。

  2. 设置覆盖率选项 — 请参考下述的可用选项描述。

选项

描述

示例

类文件目录或jar包

+|-:[路径] 的形式,相对于 检出目录 的路径模式的换行符分隔的集合,用于扫描需要分析的类文件。 除非需要它们的覆盖率,否则不必列出库和测试类文件。

+:target/main/java/**

要进行仪器化的类

+|-:[路径] 形式的类名模式的换行符分隔的集合。 允许在 "Classfile 目录或 jars "字段中过滤掉不需要的 classes。 在测试类编译的情况下非常有用。

+:com.package.core.*

-:com.package.*Test*

代码覆盖率结果可以在概览选项卡的构建结果页面上查看;详细报告显示在专用的代码覆盖率选项卡上。

将 JaCoCo 覆盖率数据导入到 TeamCity

TeamCity 可以解析 JaCoCo 覆盖数据,并使用以下格式的 服务消息 生成报告:

##teamcity[jacocoReport dataPath='<path to jacoco.exec file>']

TeamCity 将使用默认的 JaCoCo 版本来解析导入的数据。 请注意,如果导入的覆盖率由不同的次版本(X.X.X 中的第二个数字)生成,TeamCity 将无法处理其类文件并收集覆盖率。 为了防止这种情况,确保在 管理 | 工具 | JaCoCo 覆盖率 中选择的默认版本与您要导入的覆盖率的工具版本相对应。
或者,您也可以直接在服务消息体中指定所需的工具版本: ##teamcity[jacocoReport dataPath='coverage_data/jacoco.exec' includes='*' classpath='+:build/classes/java/main/**' toolVersion='X.X.X']。 确保指定的版本已在 TeamCity 服务器上安装。

特性

描述

默认值

示例

dataPath

相对于检出目录的空格分隔的路径集,用于读取 jacoco 数据文件

jacocoResults/jacoco.exec jacocoResults/anotherJacocoRun.exec

包含

以空格分隔的类名包含模式集

*

com.package.core.* com.package.api.*

排除

由空格分隔的类名排除模式集合

com.package.test.* .*Test

相对于检出目录的,由空格分隔的路径集,用于读取来源。 默认无需列出。

.

src

classpath

空格分隔的路径模式集,以 +|-:[路径] 的形式扫描要分析的类文件。 除非需要获取其覆盖率,否则不需要列出库和测试类文件。

+:**/*

+:target/main/java/**

reportDir

存储临时文件的目录路径。 报告将在此目录下以覆盖率 .zip 的形式生成。 请检查是否有与此同名的现有目录。

Agent 的临时目录下的一个随机目录

jacocoReport

一个完整服务消息的示例:

##teamcity[jacocoReport dataPath='jacoco.exec' includes='com.package.core.*' classpath='classes/lib/some.jar' reportDir='temp/jacocoReport']
最后修改日期: 16日 7月 2024年