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