gcovを一括実行して結果を纏める(Excelで見やすいように)

以下のカバレッジが測定できる(はず。。。)

  • Lines executedは実効ラインをどれだけ通過したかを表すのでC0カバレッジ
  • Branches executedTaken at least onceは分岐ラインの数と通過したかを表すのでC1カバレッジ
  • Calls executedは対象関数内で別関数を呼んだかどうかなのでS0カバレッジ
#!/bin/bash
#covana.sh
#gcovを一括実行して結果を纏める
flist=`find -name *.gcda | sed 's/\.gcda/\.c/g'`

for i in $flist
do
dir=`dirname $i`
file=`basename $i`
work=`echo "gcov -bf $file -o $dir" | sh | sed 's/No branches/----\n----/;s/No calls/----/' | \
awk 'BEGIN{FS="\n";RS="";OFS=",";ORS=""; print"\n\n"}{x=1; while(x<=5){print $x","; x++} print "\n"}'`
data+=$work
done
echo "Function(File),Lines executed(C0),Branches executed(C1),Taken at least once(C1),Calls executed(S0)"
echo "$data" | sed '1,2d;s/Function `//;s/File `//;s/Lines executed://;s/Branches executed://;s/Taken at least once://;s/Calls executed://' | sed "s/'//"

0 Comments:

Post a Comment