我跟随Claus's post在LLVM 3.0的Xcode 4.2上设置了代码覆盖率。我能够看到测试覆盖率文件,但是它们仅用于我的单元测试类,而不是我的实际项目类。我尝试将主要目标上的生成测试覆盖范围文件和仪器程序流设置为是,但这没有帮助,因为它失败并出现以下错误:
从函数llvm_gcda_start_file调用的fopen $ UNIX2003
需要澄清的是,我什至认为这不是正确的方法-我只是尝试了一下它是否会在我的项目类上生成代码覆盖率。
在这一点上,我很乐于尝试任何可在我的应用程序上正常工作的代码。有什么建议?
最佳答案
您正在期待链接器问题,profile_rt
库使用fopen$UNIX2003
和fwrite$UNIX2003
函数而不是fopen
和fwrite
。
您需要做的就是将以下.c
文件添加到您的项目中:
#include <stdio.h>
FILE *fopen$UNIX2003( const char *filename, const char *mode )
{
return fopen(filename, mode);
}
size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
{
return fwrite(a, b, c, d);
}
这段代码只是将缺少的功能重新映射为标准功能。关于
$UNIX2003
后缀的说明:我发现一句Apple document说:
因此,我希望
libprofile_rt
与10.4 SDK链接。关于ios - Xcode 4.2的代码覆盖率-缺少文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8732393/