GCC Code Coverage Report


Directory: .
File: main.cpp
Date: 2025-09-27 21:24:05+00:00
Coverage Exec Excl Total
Lines: 92.0% 23 4 29
Functions: 100.0% 7 0 7
Branches: 42.0% 21 22 72

Line Branch Exec Source
1 #include <iostream>
2
3 namespace ns1
4 {
5 class Bar1
6 {
7 public:
8 7 Bar1() : m_bar_1(1)
9 7 { ++m_counter_bar1; }
10 4 virtual ~Bar1()
11
0/2
✗ Branch 0 not taken.
✗ Branch 1 not taken.
4 { --m_counter_bar1; } // possible compiler-generated destruction code - auto-detected and excluded
12
13 int m_bar_1;
14 static int m_counter_bar1;
15 };
16 int Bar1::m_counter_bar1 = 0;
17 }
18
19 namespace ns2
20 {
21 class Bar2 : public ns1::Bar1
22 {
23 public:
24 5 Bar2() : m_bar_2(2)
25 5 { ++m_counter_bar2; }
26 3 virtual ~Bar2()
27
0/2
✗ Branch 0 not taken.
✗ Branch 1 not taken.
3 { --m_counter_bar2; } // possible compiler-generated destruction code - auto-detected and excluded
28
29 int m_bar_2;
30 static int m_counter_bar2;
31 };
32 int Bar2::m_counter_bar2 = 0;
33 }
34
35 namespace ns3
36 {
37 class Bar3 : public ns2::Bar2
38 {
39 public:
40 3 Bar3() : m_bar_3(3)
41 3 { ++m_counter_bar3; }
42 2 virtual ~Bar3()
43
0/2
✗ Branch 0 not taken.
✗ Branch 1 not taken.
2 { --m_counter_bar3; } // possible compiler-generated destruction code - auto-detected and excluded
44
45 int m_bar_3;
46 static int m_counter_bar3;
47 };
48 int Bar3::m_counter_bar3 = 0;
49 }
50
51 1 int main(int argc, char* argv[]) {
52 try {
53
1/2
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
1 ns1::Bar1 bar1;
54
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar1.m_bar_1: " << bar1.m_bar_1 << std::endl;
55
1/2
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
1 ns2::Bar2 bar2;
56
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar2.m_bar_1: " << bar2.m_bar_1 << std::endl;
57
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar2.m_bar_2: " << bar2.m_bar_2 << std::endl;
58
1/2
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
1 ns3::Bar3 bar3;
59
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar3.m_bar_1: " << bar3.m_bar_1 << std::endl;
60
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar3.m_bar_2: " << bar3.m_bar_2 << std::endl;
61
3/6
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
1 std::cout << "bar3.m_bar_3: " << bar3.m_bar_3 << std::endl;
62 } catch (const std::exception &e) { // LCOV_EXCL_START
63 std::cout << "caught exception";
64 std::cout << ": " << e.what();
65 std::cout << std::endl;
66 } // LCOV_EXCL_STOP
67
68 1 return 0;
69 } // compiler-generated destruction code - auto-detected and excluded
70