switchステートメントを使用していくつかのCコードでgcovを実行しています。私はそのswitchステートメントを通るすべての可能なパスをカバーするテストケースを作成しましたが、それでもswitchステートメントの分岐が取得されておらず、「少なくとも1回取得」統計で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
。出力は、スイッチ上の8つのブランチと、1つ(ブランチ6)が取得されていないことを示します。
それらすべてのブランチとは何ですか?100%のカバレッジを取得するにはどうすればよいですか?