xcparse

一个命令行工具,用于从 Xcode 11 XCResult 文件中提取代码覆盖率和屏幕截图。

要了解更多关于 Xcode 11 的 xcresult 格式,请阅读 Rishab Sukumar 在 ChargePoint Engineering 博客上的文章

安装

Homebrew

在您的终端输入以下命令

brew install chargepoint/xcparse/xcparse

这将会接入我们的 xcparse Homebrew tap 并且在您的本地机器上安装该工具。

Mint

要通过 Mint 使用 xcparse,请在通常的用法前加上 mint run ChargePoint/xcparse,像这样

mint run ChargePoint/xcparse xcparse <command> <options>

要使用 xcparse 的特定版本,请添加发布标签,像这样

mint run ChargePoint/xcparse@2.1.0 xcparse --help

Bitrise

想在 Bitrise 中使用它吗?我们在 Bitrise StepLib 中提供了一个 xcparse Bitrise 步骤,因此您可以直接从 Bitrise Workflow UI 添加 xcparse!

请参阅我们的 Bitrise 步骤的 README 以获取更多信息。

用法

xcparse <command> <options>

以下是一些常见命令的示例。 如需更多帮助,请在任何命令上使用 --help 选项

屏幕截图

xcparse screenshots --os --model --test-plan-config /path/to/Test.xcresult /path/to/outputDirectory

这将导致屏幕截图被导出,像这样

Screenshots exported into folders

可以添加和删除选项来更改用于导出的文件夹结构。 不使用任何选项将导致所有附件导出到输出目录中。

可用选项包括

选项 描述
--model 按测试目标模型划分
--os 按测试目标操作系统划分
--test-plan-config 按测试运行配置划分
--language 按测试语言划分
--region 按测试区域划分
--test 按测试划分

请参阅 xcparse screenshots --help 以获取完整列表

测试状态

--test-status 选项允许仅允许来自具有至少一个提供的状态字符串匹配的状态的测试的屏幕截图。

示例 描述
--test-status Success 仅通过测试
--test-status Failure 仅失败测试
--test-status Success Failure 仅通过或失败测试
--test-status 'Expected Failure' Failure 仅预期失败或失败测试
--test-status 'Expected Failure' 仅预期失败测试

测试状态字符串可以通过使用屏幕截图子命令的详细模式找到。

活动类型

--activity-type 选项允许仅允许其活动类型与至少一个提供的活动类型字符串匹配的屏幕截图。

示例 描述
--activity-type com.apple.dt.xctest.activity-type.testAssertionFailure 仅测试失败屏幕截图
--activity-type attachmentContainer userCreated 仅用户创建的屏幕截图

请注意,当提供的活动类型字符串没有反向 DNS 风格的域名时,它被假定为 com.apple.dt.xctest.activity-type.<activityTypeString> 并且自动添加域名。

因此,这两个选项调用是等效的

--activity-type userCreated attachmentContainer

--activity-type com.apple.dt.xctest.activity-type.userCreated com.apple.dt.xctest.activity-type.attachmentContainer

活动类型可以在详细模式下找到。 以下是一些常见类型的列表

活动类型 描述
com.apple.dt.xctest.activity-type.attachmentContainer 包含附件的占位符活动,可能包含用户创建的屏幕截图
com.apple.dt.xctest.activity-type.deletedAttachment 已删除的附件占位符活动
com.apple.dt.xctest.activity-type.internal 内部测试步骤,可能有自动屏幕截图以显示测试进度
com.apple.dt.xctest.activity-type.testAssertionFailure 断言中测试失败的步骤,可能有失败屏幕截图
com.apple.dt.xctest.activity-type.userCreated 用户创建的屏幕截图/附件

附件

xcparse attachments /path/to/Test.xcresult /path/to/outputDirectory --uti public.plain-text public.image

导出 xcresult 中符合 public.plan-textpublic.image 统一类型标识符 (UTI) 的所有附件。 例如,屏幕截图命令实际上只是附件命令,它对 public.image UTI 附件进行白名单操作。 xcresults 中其他常见的类型是 public.plain-text,用于测试失败的调试描述。

阅读 此 Apple 文档,以获取公开记录的 UTI 的列表。

代码覆盖率

xcparse codecov /path/to/Test.xcresult /path/to/exportCodeCoverageFiles

这将导出 action.xccovreport & action.xccovarchive 到您的输出目录中。

日志

xcparse logs /path/to/Test.xcresult /path/to/exportLogFiles

这将导出日志和诊断文件到类似于 Xcode 10 的 xcresult 格式的每个操作的文件夹结构中。

Logs exported into folders

转换

xcparse convert /path/to/AppThinningSizeReport.txt /path/to/outputDirectory --flagVariants sizeLimit

这将导出一个给定 App Thinning Size Report 的 JSON 表示到输出目录。

标记变体

--flag-variants 选项允许生成一个应用大小违规报告,其中包含所有超出指定大小限制的应用变体。

示例 描述
--flag-variants 10MB 标记超出 10MB 的变体
--flag-variants 13 标记超出 13MB 的变体
--flag-variants invalid 标记超出 10MB 的变体

如果未指定大小单位,则默认单位被认为是兆字节。 同样,无效的参数会导致使用 10MB 的默认大小限制来标记应用大小违规。

帮助

xcparse --help

xcparse screenshots --help

使用 --help 了解所有我们没有提到的选项!