2011-06-28 282 views
9

アプリケーション用の単体テストがいくつかあり、それぞれが.gcdaファイルを生成できます。テストスイート全体のカバレッジを表す統一された.gcdaファイルを生成できるようにしたいと考えています。これを行う簡単な方法はないようですが、私は間違っている可能性があります。それが私が求めている理由です。2つの.gcdaファイルを1つにマージする方法はありますか?

With gcov, is it possible to merge to .gcda files?以前に尋ねられたのは、lcov .infoファイルに変換してその方法でマージすることでした。可能であれば、私はlcovを使用するよう強制されないように、マージ操作の出力を単一の.gcdaファイルにしたいと思います。

答えて

4

.gcdaファイルをマージするコードはありますが、残念ながらgccの一部として構築されているlibgcov.aに埋め込まれています。カバレッジでコンパイルされたプログラムを終了する(または何らかの方法で呼び出す)と、既存の.gcdaファイルが実際に検出され、ロードされ、実行中のプログラムのデータでデータが集計され、元に戻されます。私はコマンドラインでその機能を提供するツールについては知らない。 libgcov.aであっても、あなたが望むことをするのに便利なフックがなく、ソースをgcc-coreディストリビューションから取り出して変更する必要があります。

私が過去に行ったことは、すべてのデータを注釈付きソース(.gcov)に抽出し、そのレベルで集計することだけです。 .gcda形式では、回線カバレッジ情報(ブランチ数など)よりも多くの情報を格納でき、libgcov.aアグリゲーションはそれらをどのように組み合わせるかを知っています(合計は単純ではないものもあります)。

1

1つのテストアプリケーションを異なるパラメータで連続して実行すると、gcdaファイルがランとgcovの間で更新されて1回(私はgcovr.pyを使用)集計カバレッジ情報を生成するAFAIKTを示したテストプロジェクトを作成しました。 。

関連する問題