Я запускаю gcov над некоторым кодом C с помощью оператора switch. Я написал тестовые примеры, чтобы охватить все возможные пути прохождения этого оператора switch, но он по-прежнему сообщает, что ветвь в операторе switch не занята и меньше 100% по статистике «Выполнено хотя бы один раз».
Вот пример кода для демонстрации:
#include "stdio.h"
void foo(int i)
{
switch(i)
{
case 1:printf("a\n");break;
case 2:printf("b\n");break;
case 3:printf("c\n");break;
default: printf("other\n");
}
}
int main()
{
int i;
for(i=0;i<4;++i)
foo(i);
return 0;
}
Я построил с «gcc temp.c -fprofile-arcs -ftest-coverage
», запустил «a
», затем сделал «gcov -b -c temp.c
». Выход показывает, что восемь ветвей на коммутаторе и одно (ветвь 6) не занято.
Что это за ветки и как мне получить 100% покрытие?