2

我一直在尝试让 GCov 在带有 iOS SDK 5.0 的 Lion 上使用 Xcode 4.2Build 4D199 无济于事。有没有人有这方面的运气?我正在使用 Google Tools For Mac 进行单元测试,并且已在 libprofile_rt.dylib 中链接并添加了:

"OTHER_CFLAGS[arch=*]" = (
    "-ftest-coverage",
    "-fprofile-arcs",
    "-falign-loops=16",
);

如这里的封面故事页面所示http://code.google.com/p/coverstory/wiki/UsingCoverstory 但是当我找到 . -name *.gcda" 我空了。我错过了什么?

4

2 回答 2

4

XCode 4.2 不再支持GCov 。您会注意到,如果您访问他们的“手册页”,XCode 4.2 不是下拉列表中的选项。此外,如果您查看编译,它使用的是“c++”,它链接到 llvm-g++-4.2。他们现在专门使用 Clang/LLVM 工具链(反过来又经常使用 gcc 工具链),而不是让您选择直接使用 gcc 工具链。这样做的结果是在 XCode4 中进行代码覆盖gcov不再直接可用。这也会影响使用绕过 XCode 4 的 CMake 进行的编译。第一个链接为您提供了有关如何将项目更改为使用profile_rt而不是gcov.

于 2011-12-18T15:34:12.723 回答
2

如何生成覆盖率测试报告(Xcode 4.5 版)

  1. cd到你的 Xcode 项目并输入

    git clone git@github.com:j4n0/XcodeCoverage.git
    cd XcodeCoverage
    wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz
    焦油-zxvf lcov-1.10.tar.gz
    
  2. 在主目标和 SentestKit 目标上设置以下构建属性,但仅用于 Debug 配置(展开节点,有 Debug 和 Release 条目):

    生成分析代码 是
    生成测试覆盖率文件 是
    仪器程序流程 是
    
  3. 安装 Xcode 命令行工具:Xcode > Preferences > Downloads > Command Line Tools。

  4. 在你的主要目标中,添加一个“运行脚本”构建阶段来执行./XcodeCoverage/exportenv.sh

  5. 构建您的应用程序并运行测试。

  6. 从 XcodeCoverage 输入生成覆盖率报告:./getcov
    完成后,脚本将启动一个带有 html 输出的浏览器。

如果未生成报告,请尝试以下操作:

  • 编辑应用程序的 plist 并添加以下内容:
    <key>UIApplicationExitsOnSuspend</key>
    <真/>
    
    然后运行您的应用程序并按 Home。这将彻底退出并生成gcda 文件
  • 如果它仍然不起作用,请尝试使用 iPad 模拟器。

有关更多提示和技巧,请查看Richard Buckle在 iOS 上的谈话代码覆盖率。

于 2013-01-26T23:35:24.957 回答