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.
- Return Statement Before Print Statement
#include <stdio.h>
int main()
{
printf("text_1");
return 0;
printf("text_2");
}
Unreachable:
-
printf("text_2");
(It comes after thereturn
, so it will never execute.)
2. Infinite Loop Before Statements
#include <stdio.h>
int main()
{
int x = 5;
for (;;)
{
if (x == 5)
{
break;
printf("Hello World");
}
}
return 0;
}
Unreachable:
-
printf("Hello World");
(It is placed afterbreak
, so it will never be executed.)
3. Continue Before Print
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; i++)
{
continue;
printf("Hello World");
}
return 0;
}
Unreachable:
-
printf("Hello World");
(zawsze pomijane przezcontinue
)
4. False Condition in if
Statement
#include <stdio.h>
int main()
{
double X = 1.55;
if (X > 5)
{
X++;
}
return 0;
}
Efectively Unreachable at Runtime (but structurally reachable):
-
-
X++;
This line is not executed at runtime forX = 1.55
, since the conditionX > 5
is false. However, it could be executed if the value ofX
were different, so it’s not marked as unreachable in the graph syntax.
-
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.