Je lance gcov sur du code C avec une instruction switch. J'ai écrit des cas de test pour couvrir tous les chemins possibles à travers cette instruction switch, mais il signale toujours une branche dans l'instruction switch comme non prise et moins de 100% sur la statistique «Pris au moins une fois».Instructions gcov et switch
Voici quelques exemples de code pour démontrer:
#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;
}
J'ai construit avec "gcc temp.c -fprofile-arcs -ftest-coverage
", a couru "a
", puis a fait "gcov -b -c temp.c
". La sortie indique huit branches sur le commutateur et une (branche 6) non prise.
Quelles sont toutes ces branches et comment puis-je obtenir une couverture de 100%?
Le contenu du fichier .gcda est-il utile? – Cascabel