我正在用switch语句在一些C代码上运行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
”。输出指示交换机上有八个分支,一个(分支6)未被占用。
什么是所有这些分支机构,我如何获得100%的覆盖率?
.gcda文件的内容是否有帮助? – Cascabel 2010-05-11 19:52:35