コード カバレッジのテストに gcov を使用しましたが、テンプレート化された C++ コードに関してはうまく機能しません。私は boost::spirit を広範囲に使用していますが、gcov はテンプレート化されたスピリット コードを単純に無視しているようです。
また、実際に実行された可能性のある分岐/競合状態/実行フローを特定して、スレッドがどのように相互作用するかを示すカバレッジ ツールがあるかどうか疑問に思っています。
コード カバレッジのテストに gcov を使用しましたが、テンプレート化された C++ コードに関してはうまく機能しません。私は boost::spirit を広範囲に使用していますが、gcov はテンプレート化されたスピリット コードを単純に無視しているようです。
また、実際に実行された可能性のある分岐/競合状態/実行フローを特定して、スレッドがどのように相互作用するかを示すカバレッジ ツールがあるかどうか疑問に思っています。
TestCocoonは、優れたツールとレポート機能を備えた gcov よりも優れた、試すのに最適なツールです。テンプレートはコンパイル時の獣なので、取得したいカバレッジ情報がわかりません。
私の2セント
C ++テストカバレッジツールは、テンプレート本体、または少なくともカバーするように指定したファイルで定義されているテンプレートのテストカバレッジを提供します。
テンプレートのインスタンス化は区別されません。
マルチスレッドアプリケーションを使用している場合、アトミックに書き込み可能なフラグ(通常、CPUの自然なワードサイズ[32ビットまたは64ビット])を使用するようにツールを構成すると、ツールはすべてのスレッドによって実行されたブランチを記録します。これを行わないと、カバレッジフラグの更新でスレッド競合が発生し、カバレッジが少し失われる可能性があります。これはツールの欠陥ではなく、ストレージ保持プローブへの非同期アクセスの結果です。データ。)
レース検出の場合、OPはレース検出ツールを見つける必要があります。テストカバレッジツールはこれを行いません。
C++ Coverage Validatorは、テンプレートのカバレッジ データを提供します。
すべてのスレッドのコード カバレッジが追跡されます。
私は大規模な製品に取り組んでおり、カバレッジ テストには BullsEye というサード パーティのアプリを使用しました。それは驚異的に機能しました。
Parasoft CPPテストは、コードカバレッジや静的分析などのさまざまな分析に適したツールです。これは、マルチスレッドを掘り下げるのにも適しています。
http://www.parasoft.com/jsp/products/cpptest.jsp
コードカバレッジに適した10のオープンソースツールは次のとおりです。