我正在尝试在Ubuntu上收集既包含C++又包含C代码的项目的代码覆盖率。
我使用'-fprofile-arcs'和'-ftest-coverage'作为CXXFLAGS和CFLAGS的值;使用'-lgcov'作为LINKFLAGS。
C语言项目的通用结构如下:
c_code\
src
unit_tests
src包含静态库的源代码。
unit_tests目录包含使用googletest框架编写的测试,例如各种类型的测试。
TEST_F(test_case_name, test_name) {
some_gtest_assertions;
}
制作包含测试静态库的googletest二进制文件后启动。
构建并运行项目二进制文件将导致生成*.gcno和*.gcda文件。然而,我的C覆盖率结果为空(C++生成良好)。
lcov命令的格式如下:
lcov --capture --directory my_c_gcda_location --output-file c_coverage.info
通过lcov的日志,我们可以看到关于C相关的gcda文件的如下信息:
对于"my_c_gcda_location/*.gcda",gcov没有创建任何文件
还有一些错误信息如下:
*.gcda:与notes文件不匹配
我需要指定一些额外的参数或执行一些其他操作才能获得C的覆盖率结果吗?或者是什么原因导致了这些问题?
my_c_gcda_location
如何进行文件处理/创建,否则除了猜测之外,没有人能做任何事情。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小、完整和可验证的示例。 - David C. Rankin