我已经使用 C++ 编写了一个示例程序。我已经使用 GUNIT 框架编写了相应的单元测试。我成功地为每个源文件生成了 .gcda 和 .gcno 文件。我在生成 .gcno 文件的文件夹中使用了 (gcov -b -l -p -c *.gcno) 命令。我正在使用 gcov 7.5.0 。当我运行这个命令时,我看到它给了我 a) 覆盖百分比的行 b) 覆盖百分比的分支 c) 至少一次。接下来我运行 (gcovr --html -o Filename.html -r /path_to_C_sourceFiles/ .) 命令为这些数据生成 html 输出。在 html 文件中,我看到分支覆盖数据是从 gcov 生成的至少一次数据中提取的。为什么 html 没有从 gcov 数据中获取分支覆盖百分比并将其显示为分支覆盖率。与分支百分比相比,gcov 工具给出的至少数据是减少的数字。这是什么至少一次?
问问题
706 次
1 回答
0
如果一个分支至少被占用一次,它就会被覆盖。如果一个分支被执行多次,它就不再被覆盖了。所以 gcovr 主要考虑行和分支的覆盖/未覆盖状态,而 GCC 的 gcov 工具显示执行计数和分支概率。
访问分支概率可能很有用。不是在测试的上下文中,而是可能用于低级代码优化。如果您需要这些数据,您可能需要自己查看 gcov 文件。
但是,下一个版本的 gcovr(预计是 gcovr 4.3)将在 HTML 报告中显示分支计数(而不是百分比):
对于具有分支覆盖数据的每一行,都会有一个弹出窗口显示完整的分支计数。
如果您安装 gcovr 的开发版本,您现在可以使用此功能:
pip install git+https://github.com/gcovr/gcovr.git
于 2020-07-16T16:37:34.413 回答