10

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

gcov では、.gcda ファイルにマージできますか? 以前に質問され、解決策は lcov .info ファイルに変換し、その方法でマージすることでした。可能であれば、マージ操作の出力を単一の .gcda ファイルのままにして、lcov の使用を強制されないようにしたいと考えています。

4

3 に答える 3

4

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

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

于 2011-06-28T22:18:16.697 に答える
1

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

于 2011-07-07T12:48:58.927 に答える