GCC Code Coverage Report


Directory: .
File: main.cpp
Date: 0000-00-00 00:00:00
Exec Total Coverage
Lines: 20 23 87.0%
Functions: 6 6 100.0%
Branches: 7 14 50.0%
Conditions: 2 2 100.0%

Line Branch Condition Exec Source Block IDs
1 #include <stdexcept>
2
3 3 int function_that_may_throw(bool die) {
4
2/2
✓ Branch 0 (2→3) taken 1 times.
✓ Branch 1 (2→6) taken 2 times.
2/2
✓ Fully covered.
3 if (die) { 2
5
1/2
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→8) not taken.
1 throw std::runtime_error("the error"); 3, 4, 5, 8
6 } else {
7 2 return 42; 6, 7
8 }
9 }
10
11 struct RAII {
12 bool die;
13
14 RAII(bool);
15 ~RAII();
16 1 int method_that_may_throw() const {
17 1 return function_that_may_throw(die); 2, 3
18 }
19 };
20
21 1 RAII::RAII(bool die) :die(die) {}
22 1 RAII::~RAII() {}
23
24 1 int function_with_catchers(int argc) {
25 1 bool die_again = true;
26
27 try {
28
1/2
✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→10) taken 1 times.
1 function_that_may_throw(argc == 1); 2
29
1/2
✗ Branch 0 (10→11) not taken.
✓ Branch 1 (10→12) taken 1 times.
1 } catch (std::exception&) { 10, 12
30 1 die_again = false;
31 1 } 13
32
33 // GCOV_EXCL_START
34 RAII raii(die_again); 3
35 // GCOV_EXCL_STOP
36
37 try {
38
1/2
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→14) not taken.
1 raii.method_that_may_throw(); 4
39 } catch (std::exception&) { 14, 16
40 return 1;
41 } 17
42
43
1/2
✓ Branch 0 (5→6) taken 1 times.
✗ Branch 1 (5→18) not taken.
1 function_that_may_throw(argc != 1); 5
44
45 1 return 0; 6
46 1 } 7, 18
47
48
49 1 int main(int argc, char* argv[]) {
50 1 return function_with_catchers(argc); 2, 3
51 }
52