GCOVを使用すると、.gcdaファイルにマージすることは可能ですか?
-
02-10-2019 - |
質問
同じソースファイル(CおよびOBJ-C)が2つのターゲットにコンパイルされています:ユニットテスト実行可能ファイルと実際の製品(統合テストを受けます)。 2つのターゲットが異なる場所に構築されるため、オブジェクトファイル、.gcnoおよび.gcdaファイルは個別です。すべてのソースファイルがユニットテストにコンパイルされるわけではないため、すべてのオブジェクトが存在するわけではありません。すべてのソースファイルが製品ビルドにコンパイルされます。
.GCDAファイルの2つのセットを組み合わせて、ユニットテストと統合テストの合計カバレッジを取得する方法はありますか(製品ビルドで実行されているとき)?
LCOVを使用しています。
Mac OS X 10.6、GCC 4.0
ありがとう!
解決
LCOVを使用しているため、GCOV .GCDAファイルをLCOVファイルに変換し、LCOVとマージできるはずです --add-tracefile
.
マンページから: TraceFileの内容を追加します。 -Aスイッチを使用していくつかのトレースファイルを指定して、一致するテストとファイル名の組み合わせの実行カウントを追加することにより、これらのファイルに含まれるカバレッジデータを組み合わせます。
他のヒント
最後に、LCOVを使用して問題を解決することができました。
基本的に私がしたことは次のとおりです。
- フラグでアプリケーションをコンパイルします
-fprofile-arcs -ftest-coverage --coverage
- アプリケーションのコピーを各ノードに配布します。
- 各ノードのアプリケーションを並行して実行します。 (このステップは、アクセスホストのアクセスホストのアプリケーションディレクトリに生成されます)
- LCOVに彼の仕事をさせてください:
lcov --directory src/ --capture --output-file coverage_reports/app.info
- HTML出力を生成します:
genhtml -o coverage_reports/ coverage_reports/app.info
これが誰かに役立つことを願っています。
以下のように、LCOVマルチDパラメーターでマージします。できます。
lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info
所属していません StackOverflow