GoogleTest+カバレッジMemo
4194 ワード
GoogleTestの実行ファイルを
1ケースごとフィルタかけてカバレッジ出力(lcov)するBashのメモ
google_lcov.sh
#!/bin/bash
# 引数チェック
if [ $# -ne 1 ]; then
echo "引数を設定してください"
exit
fi
# google test リスト取得
list_test=$(./"$1" --gtest_list_tests)
count=1
for el in $list_test; do
if [[ $el =~ .*\. ]]; then
case_name=$el
else
# 検査実行
"./$1" --gtest_filter="$case_name$el"
# フォルダ作成
mkdir_name=$(printf %02d $count)."$case_name$el"
mkdir "$mkdir_name"
find_path=$(find ./ -name "*.gcda")
declare -A tmp_map
# 一意の*gcda格納ディレクトリを取得
for el2 in $find_path; do
tmp_map[$(dirname "$el2")]=''
done
# lcovオプション作成
uniq_dir_name=${!tmp_map[@]}
for el2 in $uniq_dir_name; do
lcov_d_options+="-d .""$el2"" "
done
# ディレクトリ移動
cd "./$mkdir_name" || exit
# カバレッジ出力
lcov -c $lcov_d_options -o lcov.info
genhtml lcov.info -o ./info
# 元のディレクトリに戻る
cd ../
# 前の出力の削除
# ちょっと微妙だけど
find ./ -name "*.gcda" -exec rm {} \;
((count++)) || true
fi
done
Author And Source
この問題について(GoogleTest+カバレッジMemo), 我々は、より多くの情報をここで見つけました https://qiita.com/wara0001/items/0c0b314390379fce1b46著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .