3

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 はこの蓄積を行うことができるように見えますが、私の現在の職場文化では、新しいソフトウェアをインストールするには数週間かかります。

助けてくれてありがとう。

4

0 に答える 0