問題タブ [lcov]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1358 参照

gcov - ソースツリーの差分ファイルに対して Gcov/Lcov を実行するには?

lcov --diffソース ビューの変更の差分のコード カバレッジ レポートを生成するオプションを使用する方法は? ソース ビューがあり、ソース ビューのいくつかのモジュールの lcov ログ ファイルと html レポートを生成できます。しかし、ソース ツリーに導入された変更の差分についてコード カバレッジ レポートを作成するオプションを探しています。lcov --diffオプションに出会いました。このオプションの使用方法を教えてもらえますか? このオプションを使用してコードカバレッジを生成することに違いはありません。試した手順は次のとおりです。

  • .infoソース ツリーを変更せずにコード カバレッジ データ ( ファイル) を生成します。
  • ソース ツリーを変更します。
  • オプションで差分ファイルを取得し-uます。
  • オプションでコード カバレッジ データを再度生成し--diffます。たとえば。--diff <.info file>
0 投票する
2 に答える
1593 参照

code-coverage - LCOV の一貫性のないカバレッジ

使い始めてlcov約1ヶ月。カバレッジ カウントは一貫していないようです。最初の実行では約 75% のライン カバレッジが報告されましたが、2 回目の実行では 19% しか報告されませんでした。使用されたテスト スイートは、両方の実行に使用されました。中に次の警告が表示されlcov --removeます。助言がありますか?

lcov: 警告: トレースファイル all.info に負の数が見つかりました

これは心配する必要がありますか?

0 投票する
2 に答える
3584 参照

makefile - CMake を使用して、*.gcno および *.gcda ファイルを make clean ルールに追加します。

次のような構造のプロジェクトがあります。

主なCMakeLists.txtファイルは次のとおりです。

テストCMakeLists.txtの場合は次のとおりです。

テスト カバレッジ レポートを処理するために、カスタム ターゲットを に追加しましたtest/CMakeLists.txt

このコードはすべて正しく機能し、期待どおりに機能します。ワークフローは次のようになります。

make cleanしかし、今度はテスト カバレッジ アーティファクトをルールに追加したいと思います。このコードをに追加しようとしましたtest/CMakeLists.txt

しかし、このアプローチは期待どおりに機能しません (私にとって)。アーティファクトを呼び出すときcmake ..はまだ存在しないため、変数Coverage_DATAは空であり、cmake ..テストの実行後にリコールが必要になります。これは醜く見えます(私にとって)。

私の質問は、テスト カバレッジ アーティファクトをmake cleanルールに追加するにはどうすればよいですか?

0 投票する
1 に答える
7997 参照

c - gcov は c の空のカバレッジを生成します

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

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

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

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

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

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

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

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

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

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

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

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

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

0 投票する
0 に答える
1489 参照

c++ - lcov が googletest 単体テストの gcov カバレッジ結果と一致しない

ソースファイルのgoogletestユニットテストを作成し、カバレッジ結果にgcovを使用し、最後にlcovを使用してhtmlドキュメントを生成することにより、ライブラリファイルfoobar.cppのカバレッジ結果を収集しようとしています。

単体テストと gcov の結果は正常に動作するようになりましたが、lcov は適切なカバレッジ結果を表示せず、foobar.cpp .gcov の結果を完全に省略していますか?

基本的に次のようにセットアップされた単体テストプラットフォームがあります。

ディレクトリ:

すべてがunittest /から実行され、このフォルダーにunittest/ $ make実行可能な foobar_testが作成されます。main()googletest/src/gtest_main.ccファイルにあります。私の Makefile は googletest に基づいており、次の注目すべき設定があります。

メイクファイル:

CXXFLAGS += -g -O0 --coverage -fprofile-arcs -ftest-coverage -Wall -Wextra -pthread LDFLAGS = -lpthread -lgcov foobar_test : foobar.o foobar_test.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@

実行可能ファイルを 1 回実行します$ ./foobar_test。これにより、各ソースの .gcno に一致する .gcda が生成されます (合計 4 倍: foobar、foobar_test、gtest_main、および gtest-all)。

次に$ gcov foobar.cpp、foobar.cpp のみで実行します (代替手段も試しまし$ gcov *.cppた... foobar_test.cpp のみを使用しても機能しません)。これにより、一連の /usr/lib がらくたを含む stdout が生成されますが、MY 結果も生成されます。実行された行: 80 の 61.25%。..`を実行し、.gcov ファイルを作成します。

私の .cpp.gcov ファイルを調べると、上記のように 61.25% の行で適切なヒットが表示されます。この時点で、4x の .gcda、4x の gcno、および約 20x の他の .gcov ファイルがあります。

ここで lcov を使用しようとすると、うまくいきませlcov --directory . -c -o result.infoん。

結果:

aの後にlcov出力を表示すると、$ genhtml report.info --output-directory report && firefox report/index.htmlfoobar *ファイルを含まないディレクトリが約5つしか表示されませんか?

複数の組み合わせを試しまし$ gcov []cpp$ lcov --base-directory [] --directory [] -c -oが、役に立ちませんでした。また、いくつかのソースファイルをソフトリンクしようとしましたが、助けにはなりませんでした。

セットアップまたはコマンドで何を変更する必要がありますか?? コメント投稿者は、より良い解決策を提案することを歓迎します。