我正在用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