我们正在使用 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/