問題タブ [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.
python - Conda - gcovr オフライン インストール
Windows 10を搭載した私のコンピューターでは、次のconda環境を作成できます
今、インターネットに接続されていない Windows 7 コンピューターでこの conda 環境を作成したいと考えています。このリンクを確認しました
しかし、私はパッケージを見つけることができませんでした
gcovr.tar.bz2
オフラインのコンピューターに gcovr をインストールするにはどうすればよいですか? ダウンロードする gcovr の現在のパッケージはどこにありますか?
ありがとう!
c++ - ヘッダー ファイルのメンバー関数の正しいコード カバレッジを取得する方法
単体テスト スイートを実行した後に gcovr を実行すると、インライン メンバー関数定義が配置されているヘッダー ファイルのカバレッジに間違った番号が表示されます。例えば:
報告されたカバレッジは 0% ですが、cout を配置するとコンソール出力に表示されるためHit.h
、単体テストの実行中にそのヘッダーの少なくとも一部のコードが実行されると確信しています。Web では、関数呼び出しが生成されず、カバレッジ ツールが実行を追跡しないように、コンパイラがメンバー関数コードをインライン化するという事実に起因する問題であることがよく示唆されています。だから私はフラグを追加しました:
コンパイラ (gcc 8.2.1) の呼び出しまでですが、同じカバレッジ レポートが表示されます。だから私は何が起こっているのか理解していません。
私を最も困惑させているのは、gcovr が 2 つのカバーされた行を報告する理由ですDetailedHit.h
。このヘッダーは非常に似てHit.h
いるため、報告されたカバレッジが 0% の場合でも同じ動作が期待されますが、このメンバー関数は次のとおりです。
結果を 10 回実行します。これは単純な関数なので、 のようにインライン化する必要がありますがHit.h
、それでもカバーされる結果になります。重要な場合、Hit は DetailedHit の具象基本クラスであり、どちらも仮想メソッドを持ちません。
gcov と gcovr がどのように機能するかについての重要な知識が欠けていると思いますが、ウェブ上で関連する手がかりを見つけることができなかったので、これについて何か助けていただければ幸いです。ありがとう。
gcovr - gcvor を使用して、他のディレクトリにあるファイルのカバレッジを取得する
gcovr出力でcppファイルを取得できないという問題があります。実際、私のメイン プロジェクトは多くのサブ cpp ファイルで構成されていますが、それらは異なるディレクトリ パスにあります。
ディレクトリ レイアウト:
D:\selv_ar\GCovTest\ado\cic\rc_actuator_switch\ulf\src
(ソースディレクトリ)test\devices\puu_driver\sw
(メイン プロジェクト ディレクトリ)core\devices\puu_driver
(サブファイル)test\testtools
(サブファイル)test\devices\puu_driver
(ワークスペース)
main.cpp
ファイル、helloworld.h
、およびhelloworld.cpp
同じディレクトリにある単純な hello world プログラムがあります。
ノート:
- 組み込みターゲットにコンパイルし
debgcov_qnx660_qcc_x86
、gcda ファイルをソース ファイルと同じディレクトリにコピーします。 - メイン プロジェクト ディレクトリから gcovr を実行しています。
質問:
helloworld.h
hello world プログラムのカバレッジ レポートを作成すると、ファイルが表示されないのはなぜですか?実際のソフトウェアのカバレッジ レポートを作成すると、メイン プロジェクト ディレクトリ内のファイルのカバレッジが表示されます。サブファイルのカバレッジが表示されないのはなぜですか?
どのディレクトリから gcvor を実行すればよいですか? メインディレクトリ?ソースディレクトリ? ワークスペース?
gcda ファイルはどこに置くべきですか? メイン プロジェクト ディレクトリに移動しますか? サブファイルディレクトリに?
gcc - コンパイル後にgccが余分なコードを生成するのを避けるには?
「gcovr」を使用してコード カバレッジを取得しようとしています。-O0
最適化レベルとして使用しています。ライン カバレッジでは必要な結果が得られますが、ブランチ カバレッジでは残念ながらそうではありません。次の回答によると、gcc はコンパイル中に余分なコードを生成します。これは、プログラム内の分岐の数に影響します。余分なコードを生成しないように指示する方法はありgcc
ますか、または少なくとも生成を最小限に抑えますか?
上記の回答によると、使用-O1
すると余分なコードの生成が少なくなりますが、私には何の利点もありませんでした。それどころか、より多くの行がカバーされ (これは間違っています)、1 つのブランチがカバーされなくなります。