問題タブ [gcovr]
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.
html - ソース ファイルが他のディレクトリの相対位置にある場合、gcovr は詳細なレポートを作成しません。
ソースファイルがルートディレクトリからの相対位置にあるときに、gcovr から適切な html 出力を取得しようとしています。
例 (gcovr が機能する場合と問題がある場合の 2 つのケースについて説明します):
ケース:1 - gcovr は問題なく動作 します。 --html --html-details を使用してルートから gcovr を実行すると、ルート ディレクトリは次のようになります。
これですべて問題なく、html の一般レポート (report.html) と詳細レポート (report_myfile.html) ができました。
ケース:2 - gcovr が正常に動作しない --html --html-details を使用してルートから gcovr を実行すると、ルート ディレクトリは次のようになります)
ご覧のとおり、gcovr は gcovr_report/ ディレクトリ内に「report.C」ファイルを生成します。
また、概要を含む一般的な html レポート (report.html) が作成されますが、ソース ファイル "myfile.c" の詳細なレポートは作成されません。obj ディレクトリを調べると、次のファイルが作成されます (以下を参照)。
調べてみると
パスは次のように解決されます。
ただし、次のようにする必要があります。
gcovr コマンドは次のとおりです。
私が間違っていることは何か分かりますか?
gcovr - cpp、gcno、および gcda ファイルが同じフォルダーに存在しない場合、GCovr は 0% のカバレッジ レポートを生成します。
以下のように、同じフォルダー内に 2 つのフォルダーが
あり
ます
。
カバレッジが0%の出力が得られました
ディレクトリをスキャンしています。gcda/gcno ファイルの場合... 2
つのファイルが見つかりました (1 つを処理します)
--preserve-paths --object-directory /opt/gcovr-3.2/doc/examples/example1/linux' in '/opt/gcovr-3.2/doc/examples/example1/linux'
ファイル /opt/ のカバレッジ データを解析していますgcovr-3.2/doc/examples/src/example1.cpp
ファイルのカバレッジ データをフィルタリングしています /opt/gcovr-3.2/doc/examples/src/example1.cpp
0 ファイルのカバレッジ データを収集しました
さらにデバッグするには、以下のコマンドを実行して「linux」フォルダーに移動します
有効なカバレッジで、次のように出力されました
/opt/gcovr-3.2/doc/examples/example1/linux
ファイル '../src/example1.cpp'
実行された行: 7 つの行の 85.71% 実行
された分岐: 2 つの行の 100.00%
少なくとも 1 回実行された: 2 つの
呼び出しの 50.00% :100.00% の
../src/example1.cpp:'..#src#example1.cpp.gcov'を作成しています
今、私は何が間違っているのか知りたいですか?私のプロジェクトは複雑なので、すべての cpp ファイルをそれぞれの 'src' フォルダーからそれぞれの 'linux' フォルダーにコピーしたくありません。--object-directory
私も同じ結果で試しました。
c - gcovr Linux と perl を使用した自動カバレッジ テスト C プログラム
2 つの C プログラムをテストして、そのカバレッジ (ライン カバレッジとブランチ カバレッジ) を確認したいと考えています。
Linux システムで gcovr を使用しています。
gcc
これを行うために、コンパイラを呼び出してファイルから入力を読み取り、C プログラムのカバレッジをテストする Perl スクリプトを作成し ました。
Cプログラムに与えられるファイルの形で多くのテストスイートがあります.Perlを使用して入力を自動化し、gcovr
.
もちろん、私は system
command と perl の backtics を使って and を呼び出しましgcc
たgcovr
。
プログラムへの入力は与えられた引数から読み取られるため、最初の C プログラムは適切に実行されます。
しかし、2 番目の C プログラムについては、プログラムがキーボードからの入力しか受け付けないか、単に "it is using scanf
" と入力するだけなので、混乱しました。
では、ターミナル linux を介して、またはコマンドscanf
で perl を使用して、キーボード () からの入力のみを受け入れる C プログラムに入力を提供するにはどうすればよいでしょうか?system
code-coverage - ファイル内の C コードの行を取得する
gcov と gcovr.py を使用して、テストのカバレッジ レポートを取得しています。すべてのソース ファイルがまったくテストされていないため、gcovr レポートには記載されていません。それにもかかわらず、コードベース全体の全体的なカバレッジを計算したいと思います。
レポートから、対象となる行を取得できますが、テストされていないファイル内の C コードの行数も取得する必要があります。コードディレクトリ内のファイルでCコードの行を取得する可能性は何ですか?
code-coverage - .c ファイルに対応する gcno または gcda ファイルがあることを検証する方法
質問があります。.c ファイルに対応する .gcno および .gcda ファイルが生成されていることを検証できる方法はありますか。例えば :
sample.c ファイルがあります。次に、.gcno ファイルと .gcda ファイルを生成します。再度 sample.c ファイルを変更しますが、変更した .c ファイルの最新の gcda および gcno ファイルを生成しませんでした。sample.c に対応する .gcno ファイルと gcda ファイルが生成されているかどうかを検証する方法はありますか?
c++ - ソースファイルの行を無視するgcov
私は gcov を使用して、貢献している C++ ライブラリのテスト カバレッジを測定しています。何らかの理由で、gcov は多くのファイルの行を実行可能ファイルとして認識していません。特定のファイルの 160 行のうち、40 行が実行可能であると表示されます。例えば:
ここで、gcov はファイル内のほぼすべての行を実行不可としてマークしますが、82 行目 (1 つの閉じ括弧) の 3 回の実行を追跡します。
これは私には意味がありません.Web上でこの問題について何も見つけることができませんでした. どんな助けでも大歓迎です。
gcov - gcovr を使用する場合、LCOV_EXCL_START/STOP は効果がありません
C++ コードに LCOV_EXCL_START/STOP タグを追加しても、gcovr レポートに影響がないようです。
なぜこれが起こるのか誰かが知っていますか?
私は次のものを持っています:
と
と
ただし、5 行throw 1;
目は除外タグで囲まれていますが、gcovr レポートに含まれています。