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