lcovコードカバレッジレポートを1つまたは2つのディレクトリに集中させる方法はありますか?
-
10-07-2019 - |
質問
最近、lcovを使用してコードカバレッジを視覚化しました。素晴らしいツールです。
気づいていることの1つは、使用していないすべてのファイルのコードカバレッジレポートを生成することです-興味のないファイルも含めます。たとえば、boostとmysql ++のコードカバレッジレポートが表示されます。ファイル。
lcovに特定のファイルのカバレッジレポートのみを生成させる簡単な方法はありますか?
次のように-kパラメーターを使用してみました:
/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info {run unit tests now} /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)。メイクファイルシステムを、テストインストルメンテーションでどのファイルをビルドするかを選択するように設計したくない場合は、次のトリックが役立ちます。
- インスツルメンテーションなしでアプリケーションを構築します。
- 計測するソースの.oファイルを削除します
- インスツルメンテーションの有効化と再構築。削除されたオブジェクトファイルのみがインストルメンテーションで再構築されます。
- lcovを実行
これにより、ターゲット領域のみがgcovアーティファクトを放出し、lcovスクリプトによって盲目的に消費されます。