code-coverage - 无论如何有将两个gcov文件合并为一个

标签 code-coverage gcov

我正在使用gcov在macosx平台中进行覆盖率测试。我通过设置完成xcode的配置:

1. Build Settings ==> Generate Test Coverage Files == Yes
2. Build Settings ==> Instrument Progaram Flow == Yes
3. Build Phases ==> Link Binary with library ==> add "libprofile_rt.dylib"

然后生成文件“Test.d, Test.dia, Test.gcno, Test.gcda, Test.o
然后,我使用gcov-4.2 -b Test.gcno命令生成Test.m.gcov文件(这就是我想要的),但是下次当我再次运行测试用例时,将再次生成文件“Test.d, Test.dia, Test.gcno, Test.gcda, Test.o”,并且将重置数据。

所以我有两个问题:
  • 有什么办法让我累积这些覆盖文件中的数据,以便我可以运行项目很多次,然后最后生成文件。
  • 如果#1绝望了,您能告诉我如何将merge two Test.gcno文件(由两次运行生成)合并为一个。我在终端中尝试gcov,以下是gcov命令的选项:
    gcov-4.2 -help
    Usage: gcov [OPTION]... SOURCEFILE
    
    Print code coverage information.
    
      -h, --help                      Print this help, then exit
      -v, --version                   Print version number, then exit
      -a, --all-blocks                Show information for every basic block
      -b, --branch-probabilities      Include branch probabilities in output
      -c, --branch-counts             Given counts of branches taken
                                        rather than percentages
      -n, --no-output                 Do not create an output file
      -l, --long-file-names           Use long output file names for included
                                        source files
      -f, --function-summaries        Output summaries for each function
      -o, --object-directory DIR|FILE Search for object files in DIR or called FILE
      -p, --preserve-paths            Preserve all pathname components
      -u, --unconditional-branches    Show unconditional branch counts too
    
    For bug reporting instructions, please see:
    <URL:http://developer.apple.com/bugreporter>.
    

  • 谢谢您提前提供的所有帮助

    最佳答案

    gcov的通常工作流程是

  • 编译并链接覆盖支持(-fprofile-arcs -ftest-coverage)
  • 可能多次运行您的可执行文件,可能使用不同的参数/设置。这将在.gcda文件
  • 中创建累积使用情况信息
  • 调用gcov以人类可读格式(.gcov)获取覆盖率统计信息

  • 因此,基本上,该应用程序的连续运行将产生累积的覆盖率统计信息。只是这些累积将发生在.gcda文件中,而不是.gcov文件中,因此您每次想要查看更新的统计信息时都必须重新运行gcov

    关于code-coverage - 无论如何有将两个gcov文件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612077/

    相关文章:

    c++ - 使用 Cmake 移动 .gcda 文件

    gcc - gcov 符号在哪里?

    c++ - 为什么 gcov 报告一个使用良好的类的头文件覆盖率为 0%?

    android - 如何使用 Android Studio 获得代码覆盖率?

    c# - 使用 C# 测试 C++ 代码时的代码覆盖率

    c++ - 使用 cmake 配置代码覆盖率

    c - 我的 Lcov 命令无法写入目录?

    python - 如何在代码中使用Python覆盖率

    visual-studio - 是否可以在没有单元测试的情况下使用 Visual Studio Code Coverage?

    c++ - CMake 和 lcov : gcno files not found