启动和停止无外设代码覆盖收集器

关于此任务

在不使用 UI 的情况下,以无外设方式运行代码覆盖。 对于未安装 UI 工作台的环境,从命令行或者作为脚本的一部分以无外设方式运行代码覆盖就很理想。

注:
  • 无外设代码覆盖在 macOS上不可用。
  • Windows 和 Linux 上的无头代码覆盖率收集器已被弃用。 在 z/OS 上使用无头代码覆盖收集器。
无外设代码覆盖收集器运行一个守护程序,该守护程序以与 UI 使用调试守护程序相同的方式侦听入局连接。 就像在 UI 中执行代码覆盖捕获一样,启动或运行应用程序,但是要使用无外设方式代码覆盖收集器的 IP/Host:port。 更多信息,请参阅使用收集器在无头模式下生成代码覆盖率
注: 缺省情况下,结果存储在 CC 文件夹下用户主目录的根目录中。 可以使用 -output 参数来更改缺省设置。
下面显示了 codecov 命令的语法图。 您可以使用单字母参数,也可以对每个选项使用完整的单字母参数。 所有参数和值都区分大小写。
读取语法图跳过可视语法图codecov -h,help-D,stopdaemon=<port>-P,printparms-d,startdaemon -a,allowoutputlocation=<TRUE|FALSE>-A,applid=<applid>-b,enablebasicauth=<TRUE|FALSE>-C,startupcommandlist=<path>-c,singleconnect-E,ignoreerrors-e,exportertype=<CCSONARQUBE|SQ|CCPDF|PDF|CCCOBERTURA|COB>-G,exportencoding=<encoding>-f,optionsfile=<path>-g,tag="text"-I,moduleincludelist=<path>-i,moduleinclude=<module_list>-L,localonly-l,cclevel=<LINE|FUNCTION>-o,output=<path>-K,daemonkeystoreproperties=<path>-P,printparms-p,port=<port list>-R,filter=<filters>-r,filterlist=<path>-S,ccsport=<port>-k,ccskeystoreproperties=<path>-s,savesource=<TRUE|FALSE>-T,timeout=<seconds>-t,testid=<testid>-u,authkeystoreproperties=<path>-v,view=<DEFAULT|SOURCE_ONLY|LISTING_ONLY>-X,moduleexludelist=<path>-xmoduleexclude=<module_list>-z,zunit=zunitname
选项列表
格式: codecov [options]
-a,allowoutputlocation=<TRUE|FALSE>
指示启动键中是否允许 -o,output 。 缺省值为 FALSE。
-A,appid=<applid>
用于承载验证的 APPLID 参数在 z/OS 上的无头代码覆盖服务中生成和验证承载令牌。
-b, enablebasicauth=<TRUE|FALSE> 启用基本验证
在z/OS 上的无头代码覆盖服务上启用基本身份验证。 缺省值为 FALSE。
-C,startupcommandlist=<path>
指定一个包含命令的文件,这些命令将在启动时发送至调试引擎。
-c,singleconnect
在单个守护程序连接之后退出(必须与 -startDaemon 配合使用)。
-D,stopdaemon=<port>
停止正在侦听端口的守护程序。
-d,startdaemon
在守护程序方式下启动,并等待连接。 如果未指定 -port ,那么将使用下一个可用端口。 使用的端口号将显示在控制台中。
-E,ignoreerrors
即使会话期间发生错误,也将产生结果。 结果可能不完整。
-e,exportertype=<CCSONARQUBE|SQ|CCPDF|PDF|CCCOBERTURA|COB>
指定代码覆盖数据的导出格式。 您可以通过在导出格式之间使用逗号来指定多个导出类型。
  • -e,exportertype=CCSONARQUBE-e,exportertype=SQ 生成带有 .xml 扩展名的 SonarQube 格式。 每个测试结果都包含在唯一子目录中。
  • -e,exportertype=CCPDF-e,exportertype=PDF 生成具有 .pdf 扩展名的 PDF 格式。 缺省情况下,源包含在 PDF 报告中。 要从报告中排除源,请指定 -s,savesource=false
  • -e,exportertype=CCCOBERTURA-e,exportertype=COB 生成带有 .xml 扩展名的 Cobertura 格式。 每个测试结果都包含在唯一子目录中。
-f,optionsfile=<path>
从所指定的选项文件中读取命令参数。
-G,exportencoding=<encoding>
指定以 SonarQube 格式导出时源的编码。 缺省情况下,指定了 UTF-8 。
仅当指定了 -e,exportertype=CCSONARQUBE 时,此参数才有效。
-g,tag="text"
指定与 CC 结果关联的标记。 例如,测试标识。
-h,help
显示帮助屏幕。
-I,moduleincludelist=<path>
指定包含将导致代码覆盖中包含匹配模块名称的模块名称或正则表达式列表的文件。 模块包含参数将覆盖模块排除参数。
-i,moduleinclude=<module_list>
将在代码覆盖中包含模块的模块名称或正则表达式的逗号分隔列表。 模块包含参数将覆盖模块排除参数。
-k,ccskeystoreproperties=<path>
使用密钥库属性文件中提供的设置以安全方式启动 CCS。 密钥存储属性文件必须包含有效密钥存储文件的路径 (ccskeystorefile) 和密码 (ccskeystorepassword)。
可以使用 z/OS 调试器密码文件生成器对密钥存储密码进行加密,以防止存储纯文本。 请参阅生成安全的密钥库密码,了解代码覆盖范围
在 Windows 和 Linux 上,codecov 命令的同一目录中提供了一个示例文件 ccskeystoreinfo.properties 。 在 z/OS 上,该文件位于 headless-code-coverage 目录中。
在 Windows 和 Linux 中,您可以在 <install_location>/headless-cc/ccskeystoreinfo.properties
z/OS 上,您可以在 /usr/lpp/IBM/debug/headless-code-coverage/ccskeystoreinfo.poperties
注意: 对于 Windows,属性文件中的特殊字符必须使用反斜杠转义。 例如: ccskeystorefile=C\:\\headless-cc\\keystore.jks
-K,daemonkeystoreproperties=<path>
使用密钥存储属性文件中提供的设置,以安全模式启动代码覆盖守护进程。 密钥存储属性文件必须包含有效密钥存储文件的路径 (keystorefile) 和密码 (keystorepassword)。密码必须使用 z/OS 调试器密码文件生成器生成。 请参阅为代码覆盖生成安全的密钥库密码为远程调试服务生成安全的密钥库密码。 在 Windows 和 Linux 上,codecov 命令的同一目录中提供了一个示例文件 keystoreinfo.properties。 在 z/OS 上,该文件位于 headless-code-coverage 目录中。 使用代码覆盖守护进程时,调试引擎也必须提供相应的凭证。 请参阅启用 z/OS 调试器与远程调试器之间的安全通信,以接收调试会话
注意: 无头代码覆盖不支持 AT-TLS。
-L,localonly
守护程序将只接受来自本地主机的连接。
-l,cclevel=<LINE|FUNCTION>
代码覆盖级别(“LINE”或“FUNCTION”)。
-o,output=<path>
用于保存代码覆盖结果文件的目录。 将在每个会话的输出目录下创建包含程序名和时间戳记的结果。 当您以 SonarQube 或 Cobertura 格式导出结果时,将创建一个子目录。
-P,printparms
列示所指定参数的摘要。
-p,port=<port list>
调试守护程序使用的端口号、端口列表(端口,端口)或者端口范围(端口 - 端口)。
-R,filter=<filters>
指定用单引号或双引号括起的过滤器列表。 使用逗号来分隔过滤器。 过滤器允许字符串或正则表达式包含或排除模块,部件和文件。
有关详细信息,请参阅在收集过程中过滤代码覆盖结果
-r,filterlist=<path>
指定包含要包含或排除模块,部件和文件的过滤器列表的文件。 每个过滤器都显示在单独的行上。
有关更多信息,请参阅 在无外设方式下收集期间过滤结果
-S,ccsport=<port>
在指定端口上启动 代码覆盖服务 (CCS)。 如果端口已在使用中,那么代码覆盖收集器和 CCS 将不会启动。
在 z/OS 上使用无头代码覆盖运行 CCS 时,会启用承载或基本身份验证。 需要 z/OS 凭证才能访问 CCS REST API ,当您在 " 代码覆盖结果 " 视图中查看结果时,将显示认证提示。 代码覆盖结果存储在用户子目录中,用户只能访问自己的结果。
CCS 使用 Jetty 服务器提供 REST API。 缺省情况下, CCS 将 Jetty 拒绝服务过滤器配置为每秒 25 个请求。 您可以通过下列其中一种方式覆盖缺省设置:
  • 对于无头代码覆盖收集器的 Windows 和 Linux 版本,请修改 <install_location>/headless-cc/codecov.ini 文件并在 -vmargs 部分中定义以下系统属性:
    -DCCSmaxRequestsPerSec=<desired_value>
  • 对于 z/OS 无外设代码覆盖收集器,或者在将 CCS 与 远程调试服务配合使用时,必须先使用 java 参数设置环境变量 Start of changeOPENJ9_JAVA_OPTIONSEnd of change ,然后再启动无外设代码覆盖:
    export Start of changeOPENJ9_JAVA_OPTIONS="$OPENJ9_JAVA_OPTIONSEnd of change -DCCSmaxRequestsPerSec=<desired_value>"
  • 对于 远程调试服务,请参阅 使用样本作业 EQARMTSU 进行定制
CCS 还配置具有 20 个并发请求的 QoS (服务质量) 文件。 您可以通过下列其中一种方式覆盖缺省设置:
  • 对于无头代码覆盖收集器的 Windows 和 Linux 版本,请修改 <install_location>/headless-cc/codecov.ini 文件并在 -vmargs 部分中定义以下系统属性:
    -DCCSmaxConcurRequests=<desired_value>
  • 对于 z/OS 无头代码覆盖收集器,必须先使用 java 参数设置环境变量 Start of changeOPENJ9_JAVA_OPTIONSEnd of change ,然后才能启动无头代码覆盖:
    export Start of changeOPENJ9_JAVA_OPTIONS="$OPENJ9_JAVA_OPTIONSEnd of change -DCCSmaxConcurRequests=<desired_value>"
  • 对于 远程调试服务,请参阅 使用样本作业 EQARMTSU 进行定制
您还可以进一步限制 CCS,只允许使用 IP 名称而不是 CCS 运行所在的 IP 地址进行访问:
  • 对于 Windows 和 Linux 版本的无头代码覆盖率收集器,请修改 <install_location>/headless-cc/codecov.ini
    -Dccs_blockIPAccess=true
  • 对于 z/OS 无头代码覆盖收集器,必须先使用 java 参数设置环境变量 OPENJ9_JAVA_OPTIONS ,然后才能启动无头代码覆盖:
    export OPENJ9_JAVA_OPTIONS="$OPENJ9_JAVA_OPTIONS -Dccs_blockIPAccess=true"
  • 对于 远程调试服务,请参阅 使用样本作业 EQARMTSU 进行定制
在 Linux 和 Windows 上, Jetty 将 Web 文件展开到 temp 目录。 在 z/OS上,这些文件存储在用户的主目录中的隐藏目录中。 要覆盖此值,可以在启动无外设代码覆盖收集器之前设置 CCSworkdir 环境值。
例如,在 Linux 和 z/OS上:
export CCSworkdir=/u/user/jettyfiles
在 Windows 命令 shell 中:
SET CCSworkdir=C:\jettyfiles
-s,savesource=<TRUE|FALSE>
保存源和结果。 缺省值为 TRUE此参数的值还控制源是否随 PDF 导出器一起显示。 例如,如果使用 -exportertype=CCPDF指定了 -savesource=TRUE ,那么源将包含在 PDF 报告中。
-T,timeout=<seconds>
在超时之前等待调试引擎响应的秒数。 缺省值为 120 秒。 会话将终止,并且将保存已捕获的结果。 指定 0(零)则将无限期等待。
-t,testid=<testid>
结果将与所指定的 testid 相关联。
-u,authkeystoreproperties=<path>
提供该选项是为了与 z/OS 调试器的 17.0.x 版本兼容,不应与 z/OS 调试器的 16.0.x 版本一起使用。 启用代码覆盖率收集器守护进程的身份验证检查。 密钥存储属性文件必须包含有效密钥存储文件的路径(keystorefile)和密码(keystorepassword)。 密码必须使用 z/OS 调试器密码文件生成器生成。 请参阅为代码覆盖生成安全的密钥库密码为远程调试服务生成安全的密钥库密码
在 Windows 和 Linux 上,codecov 命令的同一目录中提供了一个示例文件 keystoreinfo.properties

在 z/OS 上,该文件位于 headless-code-coverage 目录中。 启用身份验证后,调用 z/OS 调试器时还必须提供证书。 请参阅 17.0.x 版 z/OS 调试器文档中的为传入 TCP/IP 连接启用身份验证

-v,view=<DEFAULT|SOURCE_ONLY|LISTING_ONLY>
选择保存源时要使用的视图。
  • DEFAULT 使用任何引擎首选视图。
  • SOURCE_ONLY 仅允许将源代码视图包括在代码覆盖集合中。
  • LISTING_ONLY 仅允许将列表视图包括在代码覆盖集合中。
注:
  • DEFAULT 和 是唯一支持的视图选项。 SOURCE_ONLY SOURCE_ONLY 支持通过 z/OS 调试器 15.0.3 或更高版本提供,并应用了 PTF UI77786。
  • 要使用 COBOL 6.2 和更高版本来收集源代码级别的代码覆盖,必须使用 SOURCE_ONLY。
-X,moduleexludelist=<path>
不推荐使用。 请改为使用 -R,filter=<filters>-r,filterlist=<path>
指定一个包含正则表达式列表的文件,这些正则表达式将导致从代码覆盖中排除匹配的模块名称。
-x,moduleexclude=<module_list>
不推荐使用。 请改为使用 -R,filter=<filters>-r,filterlist=<path>
将从代码覆盖中排除模块的模块名称或正则表达式的逗号分隔列表。
-z,zunit=<zunitname>
表示代码覆盖会话是针对 ZUnit 测试用例或 IBM Test Accelerator for Z Unit Test 的。 输出文件名、测试 ID 和模块包含过滤器将被初始化,以匹配 zunitName. 如果还指定了测试标识或模块包含过滤器,那么它将覆盖随 zunitname提供的值。
注意: ZUnit 不能与 IBM® Debug for z/OS® 和 IBM Test Accelerator for Z Unit Test 的代码覆盖率仅适用于该产品。