gcov データ ファイル (*.gcda) は、複数のテストにわたってカウントを蓄積します。それは素晴らしいことです。問題は、.gcda ファイルと同じように .gcov ファイルを蓄積する方法がわからないことです。
大規模なプロジェクト (53 ヘッダー、54 cpp) があり、いくつかのヘッダーが複数の cpp ファイルで使用されています。次の例は大幅に単純化されています。力ずくのアプローチでは、必要に応じて手動の退屈な作業に何日もかかります。
たとえばxyz.hpp
、 xyz クラスを定義しているとします。24 行build()
目では xyz データを構築するメソッドを定義し、35 行目でdata()
はデータへの参照を返すメソッドを定義しています。
テスト スイートを実行してから、 gcov on を実行するとしabc.cpp
ます。レポートには、行 24 (ビルド)のxyz.hpp.gcov
カウントが 5 で、行 35 (データ) のカウントがゼロです。ここで gcov on を実行するdef.cpp
と、xyz.hpp.gcov
レポートの 24 行目でカウントが 0 になり、35 行目でカウントが 7 になります。そのため、レポート情報を累積し、24 行目 (ビルド) でカウントが 5、行で 7 になるのではなく、 35 (データ)、毎回置換されるため、すべてのカウントがリセットされます。xyz.hpp.gcov
それがデフォルトの動作である理由は理解していますが、オーバーライドできないようです。.gcov レポートをプログラムで蓄積できない場合はxyz.hpp.gcov
、カバレッジを評価するために、手動で比較する必要があります。
LCOV はこの蓄積を行うことができるように見えますが、私の現在の職場文化では、新しいソフトウェアをインストールするには数週間かかります。
助けてくれてありがとう。