4

Ubuntu で c++ と c コードの両方を含むプロジェクトのコード カバレッジを収集しようとしています。

「-fprofile-arcs」と「-ftest-coverage」の値を CXXFLAGS と CFLAGS として使用します。LINKFLAGS として「-lgcov」。

一般的な C プロジェクトの構造は次のとおりです。

c_code\
     src
     unit_tests

src には静的ライブラリのソースが含まれています。

unit_tests dir には、googletest フレームワークで記述されたテスト (種類のテストなど) が含まれます。

TEST_F(test_case_name, test_name) {
    some_gtest_assertions;
}

内部でテストするための静的ライブラリを含むビルド googletest バイナリが起動された後。

プロジェクト バイナリをビルドして実行すると、*.gcno および *.gcda ファイルが生成されます。ただし、私の C カバレッジの結果は空です (C++ は適切に生成されています)。

lcov コマンドの形式は次のとおりです。

lcov --capture --directory my_c_gcda_location --output-file c_coverage.info

lcov のログは、C 関連の gcda ファイルについて次のように表示します。

gcov は「my_c_gcda_location/*.gcda」のファイルを作成しませんでした`

次のようなエラーもあります。

*.gcda:メモ ファイルとのスタンプの不一致

C のカバレッジ結果を取得するには、追加のパラメーターを指定するか、追加のアクションを実行する必要がありますか? または、これらの問題の原因は何ですか?

4

1 に答える 1