使用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$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
后缀:
我发现一个苹果文件说:
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/用于.gcda
和.gcno
文件的GUI。
文档解释了生成这些文件所需的设置http://code.google.com/p/coverstory/wiki/UsingCoverstory 。