問題タブ [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.
gcc - 最適化せずに gcc で gcov を使用するには?
次のようなテストコードがあります。
コンパイル フラグを追加しました:-fprofile-arcs -ftest-coverage
カバレッジ データを提供します。
テストコードを次のように書きました。
lcov を使用して html レポートを生成したところ、else
ブランチreturn (n - 21) * 2
が実行されたと表示されたので、100% の行カバレッジが得られました。本当じゃない
グーグルで検索したところ、これが原因であることがわかりました--- gcc の最適化により、いくつかの単純なコード行を他の行と組み合わせて削除できますが、フラグを使用しない場合、どのようにカバレッジ データを生成すればよいでしょうか?-fprofile-arcs -ftest-coverage
ところで、私は netbeans と cygwin を使用して単体テストを行っていますgcov
が、makefile やスクリプトを手動で呼び出すのは私にとって良いことではないと思います。
参考までに、私は次のようにlcovを使用しています:
code-coverage - 出力ファイルを生成するlcovの問題
lcovを使用して実行しているいくつかのテストケースのコードカバレッジを取得しようとしています。
しかし、私が実行すると
警告が表示されます
geninfo:警告:.bbファイルでtest.c.gcovのエントリが見つかりません。ファイルをスキップします!
test.cで直接gcovを実行すると、使用率を正常に示すgcov出力を生成できます。
コードカバレッジは初めてです。これを修正するための助けをいただければ幸いです。
gcc - gcc 3.23 に libgcov.a がありません
何らかの理由で、古いバージョンの gcc、gcc2.96、または gcc 3.23 を使用する必要があります。同じものを使用して、コードのコード カバレッジ分析を実行する必要があります。
-lgcov
ただし、オプションでリンクを実行しようとすると、
/usr/bin/ld: -lgcov が見つかりません
libgcov.a
/usr/lib にないことがわかりました。ただし、私の理解では、gcc のインストール中に libgcov が通常自動的にインストールされるということでした。
この問題を解決する方法についての提案は大歓迎です
c++ - lcov のブランチ カバレッジ データの生成
コード カバレッジ メトリックに lcov を使用しようとしていますが、ブランチ カバレッジが機能しません。
これが私がそれを使用している方法です:
しかし、私は得る:
全体的なカバー率:
行......: 100.0% (60 行中 60 行)
関数..: 100.0% (26 関数中 26 行)
分岐...: データが見つかりません
何か案は?
c++ - lcov、テストされていないヘッダーのカバレッジが 0% であることを報告
例を挙げて質問します。次のファイルがあるとします。
「test.cpp」には「yes.h」が含まれています
lcov を実行すると、yes.h と test.cpp でカバーされているパーセンテージが表示されますが (これが私の質問です)、「not.h」のゼロ カバレッジ エントリが必要です。このようにして、貴重なカバレッジ メトリックを実際に取得できます。これを達成する方法はありますか?
これが私のlcovの使用法です:
ありがとう。
code-coverage - lcov/genhtmlコードカバレッジ出力にテストケースの説明を含める方法
lcovを使用して、Cコードベースのコードカバレッジレポートを生成しています。テストの説明を最終出力に統合したいと思います(lcovのgendescユーティリティを使用)。
しかし、私にはそれを行う方法についての手がかりがなく、gendescに関するドキュメントはかなりまばらに見えます(古き良きグーグルが私に教えてくれた限り)。
LTPのgendesc情報は、入力テストケース記述ファイルを作成する方法を説明しています(genhtmlで期待されるとおり)。そして、genhtml infoは--show-descriptions
、--description-file
そのようなテストケース記述ファイルを入力するために提供します。
ただし、テストケースを参照して最終レポートに含める方法がわかりません。genhtmlはそれらを未使用のテストケースと見なし、生成されたhtml出力から除外します。を使用することはできます--keep-descriptions
が、実行されたテストケースがわかりません(明らかに、コードからテストの説明への参照方法がわからないためです)。
では、最終出力で実行されたテストをlcov /genhtmlにどのように伝えるのでしょうか。何か案は?
c++ - lcov の問題: カバーされていないとマークされた奇妙な重複コンストラクターと、その行が実行されているにもかかわらず、カバーされているとマークされていない関数
小さな C++ テスト プロジェクトを立ち上げて 100% のカバレッジで実行することにより、自動テストについて詳しく学ぼうとしているときに、次の問題に遭遇しました。 、lcov はまだ 2 つの行をテストされていない (関数定義のみを含む) として報告し、「実際の」コンストラクター (これまでに定義および使用された唯一のコンストラクター) と完全に一致するにもかかわらず、テストされていないと思われる「重複した」コンストラクター メソッドを報告します。
(最小限の再現の場合は EDIT にスキップしてください)
gcovr python スクリプトを使用して (同じ正確なソース、.gcno & .gcda ファイルから) 同じカバレッジ統計を生成し、結果を Jenkins Cobertura プラグインに渡すと、すべてのカウント (行、条件、メソッド) で 100% になります。 .
これが私が意味することです:
Jenkins Cobertura カバレッジ ページ: http://gints.dyndns.info/heap_std_gcovr_jenkins_cobertura.html (すべて 100%)。
lcov を使用して処理された同じ .gcda ファイル: http://gints.dyndns.info/heap_std_lcov.html (これらの関数内の行が完全にカバーされているにもかかわらず、実行されていないとマークされている 2 つの関数定義行、および関数ヒット = 関数の合計 - 1)。
lcov からのそのソース ファイルの関数統計: http://gints.dyndns.info/heap_std_lcov_func (2 つの同一のコンストラクター定義を示しています。どちらもファイル内の同じコード行を参照しており、そのうちの 1 つはヒット 5 回とマークされ、もう 1 つはマークされています)。 0回)。
中間の lcov .info ファイル: http://gints.dyndns.info/lcov_coverage_filtered.info.txtを見ると、そこにも 2 つのコンストラクター定義があることがわかります。どちらも同じ行にあるはずです: FN:8 ,_ZN4BBOS8Heap_stdC1Ev & FN:8,_ZN4BBOS8Heap_stdC2Ev.
ああ、.uic インクルード / デストラクタの周りの混乱は気にしないでください。それらのファイルのスナップショットを撮ったとき、たまたま試していました。
これを解決する方法について誰か提案がありますか? C++コンパイラがここで行っている「舞台裏」の魔法はありますか? (おそらく、私のテストから確実に呼び出さなければならない特別な目的のためのコンストラクターの余分なコピー?) 通常の関数定義についてはどうですか? これは単にlcovの問題ですか?任意の提案を歓迎します-なぜこれが起こっているのかを理解したいのですが、私のテストがカバーされていない機能が本当にあり、Coberturaが文句を言っていない場合...またはそうでない場合、lcovにそれを理解させるにはどうすればよいですか?
編集:以下に最小限の再現シナリオを追加
lcov_repro_one_bad.cpp:
メイクファイル:
そして、これが私が得た報道です:http://gints.dyndns.info/lcov_repro_bin/lcov_coverage_html/gints/lcov_repro/lcov_repro_one_bad.cpp.gcov.html
ご覧のとおり、ヒットしないと思われる行は、関数がスローする可能性のある例外の定義であり、Child の追加のヒットしないコンストラクターは、関数リストにまだ存在します (上部の関数をクリックします)。
関数定義からスロー宣言を削除しようとしましたが、関数宣言で実行されていない行を処理します:http: //gints.dyndns.info/lcov_repro_bin/lcov_coverage_html/gints/lcov_repro/lcov_repro_one_v1.cpp。 gcov.html (ご覧のとおり、追加のコンストラクターはまだそこにあります)。
関数定義を後で定義するのではなく、クラス本体に移動しようとしましたが、余分なコンストラクターが取り除かれました: http://gints.dyndns.info/lcov_repro_bin/lcov_coverage_html/gints/lcov_repro/lcov_repro_one_v2.cpp. gcov.html (ただし、ご覧のとおり、Do_stuff 関数の定義にはまだ奇妙な点があります)。
そして、もちろん、上記の両方を実行すれば、すべてうまくいきます。
しかし、これの根本的な原因が何であるかについてはまだ困惑しています...そして、メソッド(コンストラクターを含む)をクラス本体ではなく別の.cppファイルで定義したいと思っています。関数には、スローできる明確に定義された例外があります。
これで遊んでみたいと思った場合に備えて、ソースは次のとおりです。http://gints.dyndns.info/lcov_repro_src.zip
何か案は?
ありがとう!
perl - /usr/bin/perl : シンボル検索エラー。未定義のシンボル: Perl_Istack_sp_ptr
コンパイルされたオブジェクトと対応するファイルlcov
に対してコマンド (lcov-1.9) を使用すると、エラーが発生します。gcc 3.4
.gcda
私が実行するコマンド:
エラー:
Perlに何か問題があるからですか?(しかし、開発サーバー上の Perl はおそらく問題ないはずです。) それとも、lcov と GCC の間のバージョンの不一致、またはその他の理由によるものですか?
手がかりはありますか?
linux - genhtmlのHTML出力のカスタマイズ
コードカバレッジにlcovとgenhtmlを使用しています。genhtmlによって生成される出力はCSSスタイルです。wxWidgets 2.8.12のHTMLウィンドウは、CSSスタイルのHTMLページをサポートしていません。
genhtmlを使用して通常のHTMLページを取得することは可能ですか?
よろしくジョニー