私はlcovとシェルスクリプトの使用にあまり強くないので、それは私にとって学習プロセスです。コードカバレッジレポートの作成の基本は理解していますが、特定のディレクトリを除外するコード行がわかりません。 Shell実行可能ファイルに、次のコードを記述しました。
#!/bin/sh
ROOT_DIR=$1
DEST_DIR=$2
TARGET_DIR=$3
TARGET=$4
#init lcov
lcov -c -i -d $TARGET_DIR/.. -o $TARGET_DIR/cov_init.info
#run unit test executable
"$DEST_DIR/$TARGET"
#capture coverage after running executable
lcov -c -d $TARGET_DIR/.. -o $TARGET_DIR/cov_test.info
#I added this in-generate delta of coverage
lcov -a $TARGET_DIR/cov_init.info -a $TARGET_DIR/cov_test.info -o $TARGET_DIR/cov.info
# I added this in- Excludes some third party code
lcov --remove $TARGET_DIR/cov.info '/opt/*' '/usr/*' '$ROOT_DIR/Common?ExternalLibraries/*'
#I added this in-generate report
genhtml $TARGET_DIR/cov.info --ignore-errors source --output-directory $DEST_DIR/CoverageReport/$TARGET
xdg-open $DEST_DIR/CoverageReport/$TARGET/index.html &
実行可能ファイルを実行した後、カバレッジをキャプチャする前に、ディレクトリを除外する必要があると確信しています。
lcov
には、指定されたファイルのカバレッジデータを無視するオプション--remove
があります。
--remove tracefile pattern
tracefile
からデータを削除します。
tracefile
から特定のファイルセットのカバレッジデータを削除する場合は、このスイッチを使用します。追加のコマンドラインパラメーターは、シェルのワイルドカードパターンとして解釈されます(シェルが最初に展開しないように、それに応じてエスケープする必要がある場合があることに注意してください)。これらのパターンの少なくとも1つに一致するtracefile内のすべてのファイルエントリが削除されます。削除操作の結果は、stdoutまたは
-o
で指定されたtracefile
に書き込まれます。
-z
、-c
、-a
、-e
、-r
、-l
、--diff
、または--summary
のいずれか1つのみ一度に指定できます。
あなたは次のようなことをすることができます。以下のハイパーリンクからの引用
lcov --remove /tmp/libreoffice_total.info -o /tmp/libreoffice_filtered.info \
'/usr/include/*' \
'/usr/lib/*' \
'/usr/local/src/libreoffice/*/UnpackedTarball/*' \
'/usr/local/src/libreoffice/workdir/*' \
'/usr/local/src/libreoffice/instdir/*' \
'/usr/local/src/libreoffice/external/*' \
詳細については、 このページ を参照してください。