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

有没有办法将两组.GCDA文件组合起来以获取用于单元测试和集成测试的总覆盖范围(因为它们在产品构建上运行)?

我正在使用LCOV。

Mac OS X 10.6,GCC 4.0

谢谢!

有帮助吗?

解决方案

由于您正在使用LCOV,因此您应该能够将GCOV .GCDA文件转换为LCOV文件并将其与LCOV合并 --add-tracefile.

来自manpage: 添加TraceFile的内容。使用-a开关来指定几个TraceFiles,以组合这些文件中包含的覆盖范围数据,以添加执行计数以匹配测试和文件名组合。

其他提示

最后,我设法通过LCOV解决了我的问题。

基本上我所做的是以下内容:

  • 用标志编译应用程序 -fprofile-arcs -ftest-coverage --coverage
  • 将应用程序的副本分配给每个节点。
  • 并行执行每个节点中的应用程序。 (此步骤将在访问主机中的应用程序目录中生成覆盖范围信息)
  • 让LCOV做他的工作:
    • lcov --directory src/ --capture --output-file coverage_reports/app.info
  • 生成HTML输出:
    • genhtml -o coverage_reports/ coverage_reports/app.info

我希望这对某人有帮助。

我通过LCOV Multi -D参数合并,如下所示。有用。

lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top