21

広範な単体テスト (CppUnit を使用) を含む非常に大きなコード ベースがあります。これらのテストによって実行されるコードの割合を計算し、(理想的には) ライブラリごとまたはファイルごとに実行されたコードの量を示す何らかのレポートを生成する必要があります。

ここにキッカーがあります: これは完全に無人で実行する必要があり (最終的には継続的インテグレーション ビルド内で)、クロスプラットフォームである必要があります (まあ、少なくとも WIN32 と *nix)。

これを行うのに役立つツールまたはツールのセットを提案できる人はいますか? 私は CppUnit から変更することはできません (変更したくもありません。お尻を蹴ります)。

乾杯、

4

5 に答える 5

14

どのツールを使用すればよいですか?

この記事では、C++ コード カバレッジ ツールを探している別の開発者の不満について説明します。著者の最終的な解決策はBullseye Coverageでした。

ブルズアイ カバレッジ機能:

継続的インテグレーションへのフックに関しては、使用する CI ソリューションによって異なりますが、自動テストに使用する make ファイルにインストルメンテーション / カバレッジ測定ステップをフックできる可能性があります。


Linux と Windows のテスト?

すべてのテストが両方の環境で正しく実行される限り、どちらか一方のカバレッジを適切に測定できます。(Bullseye は両方のプラットフォームをサポートしているように見えますが)。しかし、両方の環境で継続的インテグレーション ビルドを行っていないのはなぜですか?? 両方の環境でクライアントに配信する場合は、両方でテストする必要があります。

そのため、Linux ビルド用と Windows ビルド用に 1 つずつ、2 つの継続的なビルド サーバーをセットアップする必要があるように思われます。おそらく、これはvmwarevirtualboxなどの仮想化ソフトウェアで簡単に実現できます。両方の OS でコード カバレッジ メトリクスを実行する必要はないかもしれませんが、ユニット テストは必ず両方で実行する必要があります。

于 2008-08-28T18:49:37.500 に答える
8

GNU GCCをコンパイラとして使用できる場合、 gcovツールはうまく機能します。プロセス全体を完全に自動化するのは非常に簡単です。

于 2008-08-28T20:10:31.267 に答える
4

GCC ツールチェーンを使用している場合、gcov はソース、機能、およびブランチ カバレッジの統計を取得します。gcov は MinGW と Cygwin で正常に動作します。これにより、カバレッジの統計を取得できるだけでなく、実行されていないコードを視覚化できるインストルメント化されたソース コードを発行することもできます。

ただし、きれいなレポートで公園から抜け出したい場合は、gcov をlcovと組み合わせて使用​​することをお勧めします。lcov は、ファイルとディレクトリにスコープされたバー レポート、機能カバレッジの統計、カバレッジを示す色分けされたソース ファイルの参照を提供します (緑は実行されたことを意味し、赤は実行されていないことを意味します...)。

lcov は Linux では簡単ですが、Cygwin では perl のハッキングが必要になる場合があります。私は個人的に、Windows でスクリプト (lcov は perl で実装されています) を実行する際に問題が発生しました。ハッキングされたバージョンが動作するようになりましたが、事前に注意してください。

別のアプローチは、Windows で gcov を発行し、Linux で lcov 後処理を行うことです。

于 2009-06-16T20:35:57.263 に答える
2

SD C++ テスト カバレッジツールをチェックしてください。GCC および MSVC6 用に入手できます。

オーバーヘッドの少ないプローブ データ コレクション、コードにオーバーレイされたカバレッジ データの優れた表示、およびメソッド/クラス/ファイル/ディレクトリ レベルにわたるカバレッジのロールアップによる完全なレポート生成を備えています。

編集: 2015 年 8 月: Visual Studio 2015 を介して GCC5 およびさまざまな MS 方言をサポートするようになりました。Linux でこれらのツールを使用するには、Wine が必要ですが、ツールは Linux ネイティブの sh スクリプトと Linux/Java ベースの UI を提供するため、ツールは感じますネイティブ Linux ツールのように。

于 2009-08-31T00:36:59.257 に答える
0

コンパイラを指定する必要があったと思います-Linuxにはgccを使用しており、WIN32にはMSVC 6(古いですが、(ほとんど)動作します)を使用しています。

そのため、gcov は Win32 ビルドでは機能せず、Bullseye は Linux ビルドでは機能しません。

それからまた、1 つの OS だけをカバーする必要があるかもしれません...

于 2008-08-29T08:17:16.810 に答える