我跟随Claus's post在LLVM 3.0的Xcode 4.2上设置了代码覆盖率。我能够看到测试覆盖率文件,但是它们仅用于我的单元测试类,而不是我的实际项目类。我尝试将主要目标上的生成测试覆盖范围文件仪器程序流设置为,但这没有帮助,因为它失败并出现以下错误:

从函数llvm_gcda_start_file调用的fopen $ UNIX2003

需要澄清的是,我什至认为这不是正确的方法-我只是尝试了一下它是否会在我的项目类上生成代码覆盖率。

在这一点上,我很乐于尝试任何可在我的应用程序上正常工作的代码。有什么建议?

最佳答案

您正在期待链接器问题,profile_rt库使用fopen$UNIX2003fwrite$UNIX2003函数而不是fopenfwrite
您需要做的就是将以下.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/

10-15 09:18