2

共有ライブラリのカバレッジ テストを実行しようとしています。私が gcov/lcov を選択したのは、無料でオープン ソースであるため、すぐに試すことができるからです (商用ソフトウェアは承認/購入が必要で、多くの決定を下す必要があります。時間がかかります)。

状況は次のとおりです - ライブラリ - Fortran で書かれた当社の製品は、シミュレーション ソフトウェア (具体的には MSC.Software の ADAMS) に使用されます。-fprofile-arcs -ftest-coverage を使用してライブラリをコンパイルでき、ADAMS で使用すると正しく動作します。ただし、.gcda ファイルは作成されません。

ライブラリの基本的な動作をテストするための小さなテスト実行可能ファイルがあります (メソッドの小さなサブセット)。カバレッジ テスト スイッチを使用してこの実行可能ファイルをコンパイルすると、実行可能ファイル自体とライブラリの両方の .gcda ファイルが得られます。

問題は、ライブラリを使用する実行可能ファイルがカバレッジ テスト スイッチでコンパイルされていない場合、ライブラリの gcov 測定を呼び出すことは可能かということです。はいの場合、どのように?

広範なテストを作成することは可能ですが、ADAMS (またはその他のシミュレーション パッケージ) を複製するのとほとんど同じです。または、間違ったカバレッジ テスト ツールを選択したため、商用製品に移行する必要がありますか?

前もって感謝します。

マイク

4

2 に答える 2

2

プロプライエタリソフトウェアによって呼び出されるライブラリのコードカバレッジテストには問題がないようです。同じバージョンのコンパイラですべてのコンポーネントをコンパイルし、対応するgcovバージョンを使用することにのみ注意を払う必要があります。私の場合、ライブラリ(Fortran)はf77(gcc-3.4.6)でコンパイルされ、そのコンポーネントは最新のgcc(gcc-4.4)でコンパイルされました。ADAMSで使用されるライブラリのラッパーはgcc-3.4.6で再度コンパイルされ、使用されるgcovは4.1でした。

すべてのコンポーネントにgcc-3.4.6を使用すると、非常に魅力的なコードカバレッジテスト結果が得られました。

トピックが閉じていると考えてください。ただし、質問がある場合は、質問してください。私の経験を喜んで共有します。

于 2011-04-14T06:37:44.370 に答える
0

私がプログラムをコンパイルする方法は、通常、すべてのモジュールのコンパイラにまったく同じスイッチを提供することです.

ただし、次に行うことは、gcov からの出力ファイルを後処理し、テスト コードに関連するファイルのみを無視しますが、テスト コードによって直接呼び出されるコードに関連するすべてのファイルと、それ自体によって呼び出されるライブラリ コードを保持します。

于 2011-03-03T14:40:47.953 に答える