lcov/genhtml 可以显示从未执行过的文件吗?

问题描述 投票:0回答:2

如何使

lcov
genhtml
显示未链接/加载的文件?我使用它来显示测试覆盖率,并且我希望看到每个源文件都出现在 HTML 报告中,即使它的覆盖率为零。这样我就可以使用 lcov 来识别缺少测试的源文件。丢失的源文件已为其创建了 .gcno 文件,但没有 .gcda 文件。

gcc code-coverage lcov
2个回答
8
投票

如果您想查看所有文件,您必须使用 -i 选项创建基线覆盖数据文件。 捕获数据后,您必须使用 -a 选项合并两个文件。

lcov 手册页中有一个示例(https://linux.die.net/man/1/lcov):

捕获初始零覆盖数据。

在包含 .bb 的目录上使用 -c 和此选项运行 lcov, 运行任何测试用例之前的 .bbg 或 .gcno 文件。结果是 “基线”覆盖率数据文件,其中包含每个的零覆盖率 仪表化线路。将此数据文件(使用 lcov -a)与 测试运行后捕获的覆盖率数据文件,以确保 即使不是所有源代码,覆盖的总行数的百分比也是正确的 测试期间加载了代码文件。

捕获测试用例数据时的推荐程序:

  1. 创建基线覆盖数据文件

    lcov -c -i -d appdir -o app_base.info

  2. 执行测试

    应用程序目录/测试

  3. 创建测试覆盖率数据文件

    lcov -c -d appdir -o app_test.info

  4. 合并基线和测试覆盖率数据

    lcov -a app_base.info -a app_test.info -o app_total.info

然后您必须使用 app_total.info 作为 genhtml 的来源。


0
投票

似乎为每个未覆盖的 gcno 文件触摸一个空的 gcda 文件效果很好。这个对我有用。而且速度更快,因为 lcov 运行速度非常慢,我们只需要在此解决方案中运行 lcov 一次。

© www.soinside.com 2019 - 2024. All rights reserved.