使用GCOV,是否可以合并到.gcda文件?
-
02-10-2019 - |
题
我有相同的源文件(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
不隶属于 StackOverflow