如何使用gcovr工具提高分支机构的覆盖率

时间:2020-07-16 14:09:08

标签: gcov lcov gcovr

我已经使用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生成的数据至少从获取的至少部分中提取了分支Covergae数据。为什么html不从gcov数据中获取分支覆盖率并将其显示为分支Covergae。与分支百分比相比,gcov工具给出的至少数据减少了。这至少要吃什么?

1 个答案:

答案 0 :(得分:0)

如果分支至少被采用一次,则覆盖该分支。如果分支执行了多次,则不会再讨论它。因此,gcovr主要考虑行和分支的已覆盖/未发现状态,而GCC的gcov工具则显示执行计数和分支概率。

访问分支概率可能会很有用。不是在测试的上下文中,而是在进行低级代码优化时。如果需要这些数据,则可能需要自己查看gcov文件。

但是,下一版gcovr(预期为gcovr 4.3)将在HTML报告中显示分支计数(而非百分比):

对于具有分支覆盖率数据的每一行,都会弹出一个窗口,显示完整的分支计数。

如果安装gcovr的开发版本,则可以立即使用此功能:

pip install git+https://github.com/gcovr/gcovr.git