問題タブ [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.

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

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 コマンドは次のとおりです。

私が間違っていることは何か分かりますか?

0 投票する
3 に答える
7019 参照

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私も同じ結果で試しました。

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

c - gcovr Linux と perl を使用した自動カバレッジ テスト C プログラム

2 つの C プログラムをテストして、そのカバレッジ (ライン カバレッジとブランチ カバレッジ) を確認したいと考えています。

Linux システムで gcovr を使用しています。

gccこれを行うために、コンパイラを呼び出してファイルから入力を読み取り、C プログラムのカバレッジをテストする Perl スクリプトを作成し ました。

Cプログラムに与えられるファイルの形で多くのテストスイートがあります.Perlを使用して入力を自動化し、gcovr.

もちろん、私は systemcommand と perl の backtics を使って and を呼び出しましgccgcovr

プログラムへの入力は与えられた引数から読み取られるため、最初の C プログラムは適切に実行されます。

しかし、2 番目の C プログラムについては、プログラムがキーボードからの入力しか受け付けないか、単に "it is using scanf" と入力するだけなので、混乱しました。

では、ターミナル linux を介して、またはコマンドscanfで perl を使用して、キーボード () からの入力のみを受け入れる C プログラムに入力を提供するにはどうすればよいでしょうか?system

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

code-coverage - ファイル内の C コードの行を取得する

gcov と gcovr.py を使用して、テストのカバレッジ レポートを取得しています。すべてのソース ファイルがまったくテストされていないため、gcovr レポートには記載されていません。それにもかかわらず、コードベース全体の全体的なカバレッジを計算したいと思います。

レポートから、対象となる行を取得できますが、テストされていないファイル内の C コードの行数も取得する必要があります。コードディレクトリ内のファイルでCコードの行を取得する可能性は何ですか?

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

code-coverage - .c ファイルに対応する gcno または gcda ファイルがあることを検証する方法

質問があります。.c ファイルに対応する .gcno および .gcda ファイルが生成されていることを検証できる方法はありますか。例えば ​​:

sample.c ファイルがあります。次に、.gcno ファイルと .gcda ファイルを生成します。再度 sample.c ファイルを変更しますが、変更した .c ファイルの最新の gcda および gcno ファイルを生成しませんでした。sample.c に対応する .gcno ファイルと gcda ファイルが生成されているかどうかを検証する方法はありますか?

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

c++ - ソースファイルの行を無視するgcov

私は gcov を使用して、貢献している C++ ライブラリのテスト カバレッジを測定しています。何らかの理由で、gcov は多くのファイルの行を実行可能ファイルとして認識していません。特定のファイルの 160 行のうち、40 行が実行可能であると表示されます。例えば:

ここで、gcov はファイル内のほぼすべての行を実行不可としてマークしますが、82 行目 (1 つの閉じ括弧) の 3 回の実行を追跡します。

これは私には意味がありません.Web上でこの問題について何も見つけることができませんでした. どんな助けでも大歓迎です。

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

gcov - gcovr を使用する場合、LCOV_EXCL_START/STOP は効果がありません

C++ コードに LCOV_EXCL_START/STOP タグを追加しても、gcovr レポートに影響がないようです。

なぜこれが起こるのか誰かが知っていますか?

私は次のものを持っています:

ただし、5 行throw 1;目は除外タグで囲まれていますが、gcovr レポートに含まれています。