16

コード カバレッジのテストに gcov を使用しましたが、テンプレート化された C++ コードに関してはうまく機能しません。私は boost::spirit を広範囲に使用していますが、gcov はテンプレート化されたスピリット コードを単純に無視しているようです。

また、実際に実行された可能性のある分岐/競合状態/実行フローを特定して、スレッドがどのように相互作用するかを示すカバレッジ ツールがあるかどうか疑問に思っています。

4

5 に答える 5

2

TestCocoonは、優れたツールとレポート機能を備えた gcov よりも優れた、試すのに最適なツールです。テンプレートはコンパイル時の獣なので、取得したいカバレッジ情報がわかりません。

私の2セント

于 2011-10-10T11:43:16.773 に答える
1

C ++テストカバレッジツールは、テンプレート本体、または少なくともカバーするように指定したファイルで定義されているテンプレートのテストカバレッジを提供します。

テンプレートのインスタンス化は区別されません。

マルチスレッドアプリケーションを使用している場合、アトミックに書き込み可能なフラグ(通常、CPUの自然なワードサイズ[32ビットまたは64ビット])を使用するようにツールを構成すると、ツールはすべてのスレッドによって実行されたブランチを記録します。これを行わないと、カバレッジフラグの更新でスレッド競合が発生し、カバレッジが少し失われる可能性があります。これはツールの欠陥ではなく、ストレージ保持プローブへの非同期アクセスの結果です。データ。)

レース検出の場合、OPはレース検出ツールを見つける必要があります。テストカバレッジツールはこれを行いません。

于 2011-12-31T05:13:14.497 に答える
1

C++ Coverage Validatorは、テンプレートのカバレッジ データを提供します。

すべてのスレッドのコード カバレッジが追跡されます。

于 2012-09-13T12:19:31.813 に答える
1

私は大規模な製品に取り組んでおり、カバレッジ テストには BullsEye というサード パーティのアプリを使用しました。それは驚異的に機能しました。

于 2011-10-17T08:55:38.013 に答える
0

Parasoft CPPテストは、コードカバレッジや静的分析などのさまざまな分析に適したツールです。これは、マルチスレッドを掘り下げるのにも適しています。

http://www.parasoft.com/jsp/products/cpptest.jsp

コードカバレッジに適した10のオープンソースツールは次のとおりです。

http://open-tube.com/10-code-coverage-tools-cc/

于 2011-10-10T09:57:18.217 に答える