2016-08-17 95 views
0

我们使用Xcode 7和8(测试版)。 Apple在XCode 7中弃用了GCOV代码覆盖范围,并在XCode 8中完全删除了它。因此,我们正试图转移到导出profdata文件。我们如何为iOS手动测试生成(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运行代码覆盖率,但在这种情况下,我需要在手动运行时也能够生成代码覆盖率。

回答

1

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

,我发现了一些细节此位置:http://clang.llvm.org/docs/SourceBasedCodeCoverage.html

“前向申报INT __llvm_profile_write_file(无效),并把它写了一份简历,这个函数返回0,当它成功,非零值,否则调用此函数多次将配置文件数据添加到现有的磁盘原始配置文件中。“

+0

这个函数产生了什么?需要使用“llvm-profdata merge -o”合并的profraw文件?或profdata文件? – LiohAu

+0

@LiohAu:需要合并的profraw文件。 – Arcank

-1

看起来像int __llvm_profile_write_file(void)适用于与CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING配对的Obj C项目。但只要你在swift项目中添加一个swift文件就会抱怨.. Swift does not support profile guided optimization.。有没有解决方法?

相关问题