【发布时间】:2011-02-18 07:28:55
【问题描述】:
我正在使用 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% 的覆盖率?
【问题讨论】:
-
.gcda 文件的内容有帮助吗?