我正在使用 switch 语句在一些 C 代码上运行 gcov。我已经编写了测试用例来涵盖通过该 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% 的覆盖率?