일부 C 코드에 대해 switch 문을 사용하여 gcov를 실행하고 있습니다. 해당 switch 문을 통해 가능한 모든 경로를 다루기 위해 테스트 사례를 작성했지만 switch 문에서 분기가 "취해서"적어도 100 % 미만으로보고합니다.gcov 및 switch 문
여기에 몇 가지 예제 코드를 보여입니다 :
#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
을"한 빌드. 출력은 스위치에 8 개의 분기를 표시하고 하나는 분기하지 않음을 나타냅니다.
모든 지점은 무엇이며 어떻게 100 % 적용 범위를 얻을 수 있습니까?
.gcda 파일의 내용이 도움이됩니까? – Cascabel