問題タブ [gcov]
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 - gcov の行数がソース コードの行数と異なります
gcov の出力は、実行された行の数が 10 の 70 % であると言う
しかし、私のコードには10行以上あります..
中かっこ、else ステートメントはカウントされません
助けてください ..
c++ - gcovおよびswitchステートメント
switchステートメントを使用していくつかのCコードでgcovを実行しています。私はそのswitchステートメントを通るすべての可能なパスをカバーするテストケースを作成しましたが、それでもswitchステートメントの分岐が取得されておらず、「少なくとも1回取得」統計で100%未満であると報告されます。
デモ用のサンプルコードは次のとおりです。
「」で構築し、「gcc temp.c -fprofile-arcs -ftest-coverage
」を実行してから「 a
」を実行しましたgcov -b -c temp.c
。出力は、スイッチ上の8つのブランチと、1つ(ブランチ6)が取得されていないことを示します。
それらすべてのブランチとは何ですか?100%のカバレッジを取得するにはどうすればよいですか?
autotools - Autotoolsの「makecheck」後のlcovの自動呼び出し
テストがインストルメンテーションでコンパイルされるautotoolsプロジェクトを正常にセットアップしたので、テストカバレッジレポートを取得できます。
'make check'が成功した後、ソースディレクトリでlcovを実行することで、レポートを取得できます。
私は今、このステップを自動化したいという問題に直面しています。これを「makecheck」または別の目標「makecheck-coverage」に追加したいと思います。理想的には、結果を解析して、カバレッジが特定のパーセンテージを下回った場合に失敗したいと思います。問題は、カスタムターゲットを追加する方法がまったくわからないことです。
私が得た最も近いものは、このサンプルのautotools configを見つけることでしたが、そのプロジェクトのどこに目標「makelcov」が追加されているのかわかりません。m4/auxdevel.m4にはいくつかの設定フラグしか表示されません。
任意のヒント?
c++ - gcov が STL ヘッダーのコード カバレッジ データを作成するのはなぜですか?
gcov foo.cpp を実行すると、foo.cpp だけでなく、foo.cpp で使用されるすべての STL ヘッダーのコード カバレッジ レポートが生成されます。
これを防ぐ方法はありますか?のような標準ライブラリのヘッダーを無視しているよう<ctime>
です。
編集
gcc メーリング リストで次の投稿に出くわしました。
objective-c - インストールされたCocoaアプリケーション上でGcovを実行するにはどうすればよいですか?
インストーラーを使用するCocoaアプリケーションがあります。コードに対してコードカバレッジを実行できるようにしたい(インストール後)。
これは、単一のバイナリが一連のテストを実行する通常の単体テストシナリオではありません。むしろ、問題のテストは実行中にUIとアプリのバックエンドと相互作用するため、Gcovがプロファイリングしていることを認識してアプリケーションを起動し、それに対してテストを実行できるようにするのが理想的です。
何か案は?
アップデート
mustISignUpに感謝します。私が質問した理由を明確にするために:
私が犯した間違いは、オブジェクト、.gcno、および.gcdaファイルをバイナリと一緒にインストールする必要があると考えていたためです(したがって、インストーラーが困難になります)。たまたま、ファイルの元の場所は、インストルメンテーションコードとともにコードに組み込まれています。
私が行った解決策は、ビルドマシンでコードを圧縮し、テストマシンのディスクに配置することです。lcov
(または単にgcov
)そこから実行できます。または、.gcdaファイルがディスク上に作成され、ソースコードを含むマシンにコピーして戻す必要があります。
いずれの場合も、インストール時および実行時にソースコードが存在する必要はありませんが、結果をlcovスタイルに戻したい場合は、生成されたカバレッジカウンターファイルをソースコードと調整する必要があります。
iphone - iPhone で gcov の環境変数を設定する方法
gcov
iPhone プロジェクトでのセットアップに関するすべての問題を解決しましたが、現在は次のようになっています。
私が間違っているかもしれないことについて誰か提案がありますか?
私は元々、グーグルの「UsingCoverStory」で見つけることができるグーグルの指示に従ってgcovをセットアップしました
更新:さて、私がやろうとしていることを明確にさせてください。自動的にテストしようとしている iPhone アプリがあります。フレームワークを使用しUISpec
て GUI を駆動しています。私が実際に知っておくべきことは、テストで実際にカバーしているコードの量です。私は本当に近いと思いますが、プロジェクトに合わせて環境/コンパイラ変数を適切に設定する方法を理解する必要があります。
ここに私がこれまでに行ったことの要約があります。最初にビルド ターゲットをコピーし、リンカー フラグと他のいくつかのオプションを規定どおりに指定しました。(これは、Google によって作成された AppleScript を使用して自動的に実行できます。手順とダウンロードは、Google で「UsingCoverStory」を検索すると見つかります) とにかく、これらの設定が正しく割り当てられていることを確認しました。構成をデバッグに設定し、これを 3.1.3 デバイスで実行しています。アプリを実行すると、アプリを終了するまで、デバッガーに特別なものは何も表示されません。その時点で、エラーが発生します。
ファイルを書き出そGCOV
うとしていると.gcda
思いますが、どこに書き込むべきかを伝える方法がよくわかりません。上記のディレクトリは私のマシン上のファイルがある場所であるため、ファイルがプロジェクトフォルダーに保存されているGCOV
ディレクトリ構造を再現しようとすることをどこかで読みました。ただし、その構造は iPhone には存在せず、デバイスもその構造を作成できないため、これは問題です。.gcno
.gcno
同じ問題を抱えている別の人を見つけたところ、環境変数を設定する必要があるとのことでした。iPhone SDK でコード カバレッジ分析用に gcov を設定するにはどうすればよいですか?
GCOV
ドキュメントには次のように記載されています。
たとえば、オブジェクト ファイル
/user/build/foo.o
が でビルドされた 場合、最終的な実行可能ファイルは、ターゲット システムでの実行時に-fprofile-arcs
データ ファイルを作成しようとします。/user/build/foo.gcda
対応するディレクトリが存在せず、作成できない場合、これは失敗します。これは、たとえば、環境を「GCOV_PREFIX=/target/run」および「GCOV_PREFIX_STRIP=1」に設定することで解決できます。このような設定では、データ ファイルに名前が付けられます/target/run/build/foo.gcda
。
私の質問は、iPhone でこれらの環境変数を設定するにはどうすればよいですか? ビルド構成または実際のコード内でこれを行う必要がありますか?
c++ - gcov/lcov カバレッジ結果から特定の関数を除外する
gcov カバレッジ分析から特定の関数またはコード行を除外することは可能ですか。私のコードには、デバッグに使用される特定の関数が含まれており、テスト スイートの一部としては実行されません。このような関数は、gcov によって報告されるカバレッジのパーセンテージを減らします。これらの機能を結果から除外したいと思います。gcovで出来ないならlcovで出来るのかもしれませんが分かりませんでした。あなたの助けに感謝します。
gcc - gcovを使用して、.gcdaファイルにマージすることは可能ですか?
同じソースファイル(CとObj-C)を2つのターゲットにコンパイルしています。単体テストの実行可能ファイルと実際の製品(統合テストが行われます)です。2つのターゲットは異なる場所に構築されるため、オブジェクトファイル、.gcnoファイルと.gcdaファイルは別々です。すべてのソースファイルが単体テストにコンパイルされるわけではないため、すべてのオブジェクトが単体テストに存在するわけではありません。すべてのソースファイルは製品ビルドにコンパイルされます。
2セットの.gcdaファイルを組み合わせて、単体テストと統合テストの合計カバレッジを取得する方法はありますか(製品ビルドで実行されるため)?
私はlcovを使用しています。
Mac OS X 10.6、GCC 4.0
ありがとう!
performance - gcov が CPU を 100% にペグするのは正常ですか?
中規模のプロジェクトで (lcov を介して) gcov を実行しています。かなり長い間、CPU が 100% 近くにありました (正確な時間はわかりませんが、30 分以上)。メモリは膨らんでいません。1つのタスクに行き詰まっているようです。
gcov がこのようなことをするのは正常ですか?
編集
運がない。ハングに関連するコードを除外する必要がありました。
iphone - iPhone: gcov を使用するにはどうすればよいですか?
iPhone プロジェクトで gcov を使用しようとしており、ここに記載されている Apple の指示に従いましたが、機能しません。
プロジェクトをビルドして構成すると、オブジェクト ファイルごとに .gcda ファイルが作成されます。ただし、実行された行は .gcda ファイルに記録されません。(CoverStory は、すべてのカバレッジが 0% であることを示しています)
次のように、テンプレートプロジェクトに単純なクラスを追加しました。
このクラスを割り当てて、application:didFinishLaunchingWithOptions で func1 を呼び出しました。
OSX 10.6.4、iPhone SDK 4.0、および Xcode 3.2.3 を使用しています。さらに構成が必要ですか? ガイドしてください。
更新 2010/7/15:
@tonclon から提供されたリンクでこれらのヒントを試しましたが、まだ機能しませんでした。次の説明では、私が試したものです。
GCC 4.0 でコンパイルされた Cocoa アプリケーション 「Cocoa」アプリケーションのプロジェクト設定で、
- GCC_INSTRUMENT_PROGRAM_FLOW_ARCS を YES に設定します
- GCC_GENERATE_TEST_COVERAGE_FILES を YES に設定します
- その他のリンカー フラグを -lgcov に設定します。
- C/C++ コンパイラのバージョンを 4.0 に設定します。
うまくいきました.gcdaファイルは、期待どおりのカバレッジ情報で生成されました. ただし、SDK 4.0 を使用した iPhone プロジェクトでは、gcc 4.0 は SDK 4.0 の一部の構文 (ブロックなど) をコンパイルできないため、同じ構成を使用できません。
google-tool-box でカスタム gcov ライブラリを使用する Other Linker Flag に -lgcov を設定する代わりに、 google-toolbox-for-mac に含まれるカスタム gcov ライブラリを試しましたが、生成された .gcda ファイルのカバレッジは 0% です。(同じ結果)
次に何をすべきか教えてください。任意の提案をいただければ幸いです。