Skip to main content

Branch coverage and unreachable branches

Task 1 

For each example from the section "Statement coverage and unreachable code" (Task 1) of this book, create a Control Flow Graph and identify  branches that are unreachable.

  1. Return Statement Before Print Statement
#include <stdio.h>
int main() 
{
    printf("text_1"); 
    return 0; 
    printf("text_2");
}

Знімок екрана 2025-05-13 133540.png

Unreachable:

  • printf("text_2");
    (It comes after the return, so it will never execute.)

2. Infinite Loop Before Statements

if (x == 5)
{
  break;
  printf("Hello World");
}

image.png

Unreachable:

  • printf("Hello World");
    (It is placed after break, so it will never be executed.)

3. Continue Before Print

for (...) {
  continue;
  printf("Hello World");
}

Знімок екрана 2025-05-13 134423.png

Unreachable:

  • printf("Hello World");
    (zawsze pomijane przez continue)

4. False Condition in if Statement

double X = 1.55;
if (X > 5) {
  X++;
}
return 0;

Знімок екрана 2025-05-13 134436.png

Unreachable (dla tej konkretnej wartości X):

  • X++;
    (ponieważ X > 5 jest fałszywe, ciało if nie jest wykonywane dla tej wartości; jednak kod sam w sobie nie jest strukturalnie nieosiągalny – jest tylko pomijany w tym przypadku)

 Task 2 

For each example from the section "Statement coverage and unreachable code" (Task 2) of this book, create a Control Flow Graph and identify  branches that are unreachable.