使用Xcode 4.2进行代码覆盖 – 缺less文件

我跟着克劳斯的post来设置代码覆盖Xcode 4.2与LLVM 3.0。 我能够看到testing覆盖率文件,但它们只用于我的unit testing类,而不是我实际的项目类。 我已经尝试在我的主要目标上将生成testing覆盖文件仪器程序stream设置 ,但这并没有帮助,因为它失败,出现以下错误:

fopen $ UNIX2003从函数llvm_gcda_start_file调用

澄清,我不认为这是正确的方法 – 我只是试图看看它是否会产生我的项目类代码覆盖率。

在这一点上,我会很高兴尝试任何可以使代码覆盖在我的应用程序上的东西。 有什么build议么?

你期待链接器的问题, 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后缀:

我发现一个苹果文件说:

UNIX™一致性变体使用$ UNIX2003后缀。

重要说明:UNIX™一致性工作从Mac OS 10.4开始,但直到10.5才完成。 因此,在10.4版本的libSystem.dylib中,存在许多符合的变体符号(带有$ UNIX2003后缀)。 该列表不完整,并且变体符号的符合性行为可能不完整,因此应该避免。

由于64位环境没有遗留的维护,所以从一开始就将它创build为符合UNIX的标准,而不使用$ UNIX2003后缀。 因此,例如,32位中的_fputs $ UNIX2003和64位中的_fputs将具有相同的符合行为。

所以我希望libprofile_rt可以连接到10.4 SDK。

我使用CoverStory http://code.google.com/p/coverstory/用&#x4E8E;.gcda.gcno文件的GUI。

文档解释了生成这些文件所需的设置http://code.google.com/p/coverstory/wiki/UsingCoverstory