当我使用gcov来测量C++代码的测试覆盖率时,它会在析构函数中报告分支.
struct Foo
{
virtual ~Foo()
{
}
};
int main (int argc, char* argv[])
{
Foo f;
}
Run Code Online (Sandbox Code Playgroud)
当我运行gcov并启用分支概率(-b)时,我得到以下输出.
$ gcov /home/epronk/src/lcov-1.9/example/example.gcda -o /home/epronk/src/lcov-1.9/example -b
File 'example.cpp'
Lines executed:100.00% of 6
Branches executed:100.00% of 2
Taken at least once:50.00% of 2
Calls executed:40.00% of 5
example.cpp:creating 'example.cpp.gcov'
Run Code Online (Sandbox Code Playgroud)
困扰我的部分是"至少采取一次:50%的2".
生成的.gcov文件提供了更多详细信息.
$ cat example.cpp.gcov | c++filt
-: 0:Source:example.cpp
-: 0:Graph:/home/epronk/src/lcov-1.9/example/example.gcno
-: 0:Data:/home/epronk/src/lcov-1.9/example/example.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:struct Foo
function Foo::Foo() called 1 returned 100% blocks executed 100%
1: 2:{
function …Run Code Online (Sandbox Code Playgroud)