6

私は Waf を使用して C プロジェクトをビルドし、gcovテスト コード カバレッジを取得しています。ただし、生成されたファイルを検索するときに混乱するソース ファイルからgcc生成する方法でWaf を呼び出します。foo.c.1.ofoo.cgcov

$ gcov foo.c
$ foo.gcno:cannot open graph file

幸いなことに、対応するオブジェクト ファイルを指定できるオプションがありますgcov-oそれにもかかわらず、これは便利ではなく、実行lcovは依然として失敗します。したがって、私の質問は次のとおりです。

  1. Waf がオブジェクト ファイルの名前を変更するのはなぜですか?
  2. この動作を無効にするにはどうすればよいですか...
  3. この問題を回避するにはどうすればよいですgcovか?lcov
4

2 に答える 2

7

gcovrを直接実行する代わりに使用できますgcov

gcovrはファイル名マジックに依存しませんが、gcovのカバレッジ ファイルを解析します。次に、適切なパラメーターを使用して
呼び出します。 これは、Waf のオブジェクト ファイルの名前変更とうまく連携します。gcov

gcovrWaf のbuildサブディレクトリから実行できます。

cd build
gcovr --root=$(pwd) --keep
lcov --capture --directory $(pwd) --base-directory $(pwd) --output-file coverage.info
genhtml coverage.info --output-directory out

この--rootオプションは、現在のディレクトリのプレフィックスを削除します。
このオプションは、 /によって使用される一時ファイル--keepを保持します。gcovlcovgenhtml

gcovr--xmlオプションを使用して、 Cobertura互換の xml 出力を生成することもできます。
その後、さまざまなフォーマッターで使用できます(JenkinsのCobertura Pluginで使用します)

于 2013-02-26T12:40:17.217 に答える
0

次のような方法で Waf の構成を変更してみましたか?

bld.program(
  obj_ext  = '.o',
  source   = 'test.c',
  target   = 'test1')
于 2012-08-13T14:43:00.710 に答える