31

私は最近、自分のコード カバレッジを視覚化するために lcov を使い始めました。それは素晴らしいツールです。

私が気付いていることの 1 つは、使用しているすべてのファイル (興味のないものも含む) のコード カバレッジ レポートが生成されることです。

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」ディレクトリのカバレッジ ファイルのみが必要です。)

ただし、これは機能しないようです。レポートには、無関係なファイルがすべて表示されます。どんな提案でも大歓迎です。ありがとう!

4

3 に答える 3

34

--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
于 2013-02-12T15:19:30.387 に答える
32

lcovはコマンド ライン引数--removeをサポートしており、要求どおりの処理を実行できます。

于 2009-05-08T02:09:24.983 に答える
2

考えられるアプローチは、カバレッジフラグ(-fprofile-arcs -ftest-coverage)を使用してコンパイルされるファイルを制限することです。makeファイルシステムを設計して、テストインストルメンテーションを使用してビルドするファイルを選択したくない場合は、次のトリックが役立つ可能性があります。

  • インストルメンテーションなしでアプリケーションを構築します。
  • インストルメントするソースの.oファイルを削除します
  • インストルメンテーションをオンにして再構築します。削除されたオブジェクトファイルのみがインストルメンテーションで再構築されます。
  • lcovを実行します

これにより、ターゲット領域のみがgcovアーティファクトを放出し、lcovスクリプトによって盲目的に消費されます。

于 2009-06-16T12:43:46.763 に答える