代码之家  ›  专栏  ›  技术社区  ›  Joe

使用gcov,是否可以合并到.gcda文件?

  •  9
  • Joe  · 技术社区  · 14 年前

    我将相同的源文件(C和Obj-C)编译成两个目标:单元测试可执行文件和实际产品(然后进行集成测试)。这两个目标构建到不同的位置,因此对象文件、.gcno和.gcda文件是分开的。不是所有的源文件都编译到单元测试中,所以不是所有的对象都存在于单元测试中。所有源文件都编译到产品版本中。

    有没有一种方法可以组合这两组.gcda文件来获得单元测试和集成测试的总覆盖率(因为它们在产品构建中运行)?

    Mac OS X 10.6、GCC 4.0

    3 回复  |  直到 14 年前
        1
  •  7
  •   fduff    9 年前

    因为您使用的是lcov,所以应该能够将gcov.gcda文件转换为lcov文件,并将它们与lcov合并 --add-tracefile .

    添加跟踪文件的内容。 使用-a开关指定几个tracefile,通过为匹配的测试和文件名组合添加执行计数来组合这些文件中包含的覆盖率数据。

        2
  •  9
  •   notandy    9 年前

    最后我设法用lcov解决了我的问题。

    基本上我做了以下工作:

    • -fprofile-arcs -ftest-coverage --coverage
    • 将应用程序的副本分发到每个节点。
    • 在每个节点上并行执行应用程序(此步骤在访问主机的应用程序目录中生成覆盖率信息)
      • lcov --directory src/ --capture --output-file coverage_reports/app.info
    • 生成html输出:
      • genhtml -o coverage_reports/ coverage_reports/app.info

    我希望这能对某人有所帮助。

        3
  •  1
  •   thoni56    4 年前

    我认为这样做的目的不是把 .gcda 但要创建独立的覆盖率数据文件,请使用

    lcov -o unittests.coverage -c -d unittests
    lcov -o integrationtests.coverage -c -d integrationtests
    

    然后,每个覆盖率数据表示一次“运行”。当然,您可以创建单独的图形或html视图。但是你也可以使用 --add-tracefile -a 简称

    lcov -o total.coverage -a unittests.coverage -a integrationtests.coverage
    

    total.coverage genhtml 例如。

        4
  •  0
  •   Pang JB Nizet    7 年前

    lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info
    
    推荐文章