Xcode 4.5中iOS代码覆盖率出现问题?

9
我正在尝试在Xcode 4.5中设置代码覆盖率。为此,我打开了调试设置的“生成测试覆盖文件”和“仪器程序流程”。根据http://meandmark.com/blog/2012/08/xcode-4-generating-code-coverage-files-with-llvm/的说法,这就足够了。然而,现在链接器抱怨找不到以下内容: _llvm_gcda_emit_arcs _llvm_gcda_emit_function _llvm_gcda_end_file _llvm_gcda_increment_indirect_counter _llvm_gcda_start_file 我尝试查找libprofile_rt.dylib,但它似乎不再存在。还需要什么来生成代码覆盖文件?

LLVM代码覆盖率目前仅适用于Mac OS X,而不是iOS。 - Swift Dev Journal
1
它可用于iOS。此外,博客文章中的说明不完整。缺少创建测试目标。 - Mateusz
3个回答

8
在目标构建设置中(务必选择全部),请按以下方式设置:
- Apple LLVM编译器 - 仪器化程序流程: 是 - 生成测试覆盖文件: 是

这是一个完全正确的答案。我刚在Xcode 4.5.1上确认了一下。你只需要为测试目标设置这些设置。你可以创建一个测试目标: 文件 -> 新建 -> 目标 然后选择iOS | 其他 | Cocoa Touch单元测试包此外,您可能需要将生成分析代码设置为YES以生成gcda文件。这是我最近遇到的唯一问题。不应该有链接错误。 - Mateusz
2
我有同样的问题。gcno 文件存在,但是没有 gcda 文件。我已经为所有构建配置设置了它们,并将“生成分析代码”设置为 YES,但仍然没有 gcda 文件。 - WalterF
我已经将这些选项设置为YES,输出中同时包含*.gcno和*.gcda文件。 - Vladimir Obrizan
谢谢。在我的代码中包含Google Analytics SDK后(使用Xcode 5),这对我很有效。你能否解释一下它到底是做什么的? - CalZone

4
我也遇到了这些链接错误。我在使用 Xcode 4.2 和 4.3 时看到了这些错误。我不确定它们是否仍然存在于 4.5 版本中。
为了解决这个问题,我向我的单元测试代码项目中添加了来自 llvm 项目的此文件。为了使它能在我的 Mac 上构建,我删除了 win32 和 sys 包含,并用 #include "stdint.h" 替换了 #include "llvm/Support/DataTypes.h" 包含。

嗨,我仍然有这个问题...我正在尝试修复它。我找不到与您找到的完全相同的文件,但我得到了一个名为:GCOVProfiling.cpp的文件。我认为它们具有相同的功能。问题是它有很多其他llvm项目文件的导入。我应该怎么处理所有的导入?任何帮助都将不胜感激,谢谢! - gyan

0

只有通过单元测试才能生成 gcda 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接