ios - 我们如何为 iOS 手动测试生成 (profdata) 代码覆盖率?

标签 ios xcode7 code-coverage xcodebuild xcode8

我们正在使用 Xcode 7 和 8(测试版)。 Apple 已在 XCode 7 中弃用了 GCOV 代码覆盖率,并在 XCode 8 中将其完全删除。因此,我们正在尝试转向导出 profdata 文件。

我们需要能够在执行手动任务时生成代码覆盖率文件(profdata/profraw,但不是 gcno 或 gcda),这是我尝试过的:

GTM_CONFIGURATION_OTHER_CFLAGS = -fprofile-instr-generate -fcoverage-mapping

还有

//If enabled, passes flag -fprofile-instr-generate and -fprofile-instr-generate
CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = YES

我知道如何为 XCTests 运行代码覆盖率,但在这种情况下,我还需要能够在手动运行时生成它。

最佳答案

我相信,但还没有尝试过,这可以通过在您的代码中调用 __llvm_profile_write_file(void) 来完成。您将需要转发声明它,并找出一种在需要时触发调用的方法。值得注意的是,生成的文件将继续聚合整个执行过程中的覆盖率,如果您想比较不同执行阶段的覆盖率,您可能需要复制生成的文件。

我在这里找到了一些细节:http://clang.llvm.org/docs/SourceBasedCodeCoverage.html

“向前声明 int __llvm_profile_write_file(void) 并调用它来写出配置文件。此函数成功时返回 0,否则返回非零值。多次调用此函数会将配置文件数据附加到现有的 on-磁盘原始配置文件。”

关于ios - 我们如何为 iOS 手动测试生成 (profdata) 代码覆盖率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005203/

相关文章:

ios - Paytm sdk ios 集成以打开 Paytm 付款表格?

ios - 播放网络文件夹中的视频文件

maven - 用于在远程机器上进行集成测试的 Jacoco 代理

c# - 如何为我的项目执行代码覆盖率。我在specflow中编写了单元测试

ios - cocos2d中x和y速度(加速度)不同?

ios - Ionic ImagePicker - 应用程序在 IOS 12.3.1 上崩溃

objective-c - 我可以像java c#那样在objective-c中实现真正的单例吗?

ios - xcode 7:滚动条上的蓝线

ios - 当应用程序进入后台或用户退出应用程序时如何停止计时器

testing - Robot 框架的代码覆盖率,其中应用程序是用 C++ 编写的