Я запускаю 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% -ный охват?