最近、コードカバレッジを視覚化するためにlcovを使い始めました。それは素晴らしいツールです。
私が気づいていることの1つは、使用しているすべてのファイル(興味のないファイルを含む)のコードカバレッジレポートを生成することです。たとえば、boostファイルとmysql ++ファイルのコードカバレッジレポートが表示されます。
Lcovに特定のファイルのカバレッジレポートのみを生成させる簡単な方法はありますか?
私は次のように-kパラメータを使用してみました:
/usr/bin/lcov -q -c -i-b。 -d .obj -k src/-k include/-o app_base.info {今すぐユニットテストを実行} /usr/bin/lcov- q -c-b。 -d .obj -k src/-k include/-o app_test.info /usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info /usr/bin/genhtml -q -o lcov_output_directory app_total.info
(「include」ディレクトリと「src」ディレクトリのカバレッジファイルのみが必要であることを意味します。)
ただし、これは機能していないようです。レポートには、まだすべての無関係なファイルが表示されます。どんな提案でも大歓迎です。ありがとう!
lcov コマンドライン引数をサポートします--removeは、要求していることを正確に実行します。
--no-external
フラグを--directory
フラグと一緒に使用して、不要なファイルを除外しました。
男性からの外部の定義:
外部ソースファイルは、-directoryまたは--base-directoryで指定されたディレクトリのいずれにも配置されていないファイルです。
したがって、私のコマンドは次のようになりました。
$ lcov --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h
考えられるアプローチは、カバレッジフラグ(-fprofile-arcs -ftest-coverage)を使用してコンパイルされるファイルを制限することです。 makeファイルシステムを設計して、テストインストルメンテーションでビルドするファイルを選択したくない場合は、次のトリックが役立つ可能性があります。
これにより、ターゲット領域のみがgcovアーティファクトを放出し、lcovスクリプトによって盲目的に消費されます。