Visual Studio プロジェクトで MSTest コード カバレッジをセットアップしています。ただし、コード カバレッジを実行すると、大きすぎるカバレッジ ファイル (データ.カバレッジ) が生成されます。その理由は、すべての dll、サード パーティ ライブラリをスキャンするためです。私のプロジェクトにはいくつかの C++ ソリューションがあり、ヘッダー ファイル内のすべてのメソッドのコード カバレッジが生成されます。テスト設定 (現在アクティブな local.testsettings) では、xyz.dll (コード カバレッジを取得したいもの) を 1 つだけ選択したことに注意してください。ただし、最終的なコード カバレッジには、xyz.dll が依存するコード カバレッジ情報が含まれています。xyz.dll の境界を超えてコード カバレッジを取得しないように、MSTest を構成する方法は? 注: 大きな data.coverage ファイルがあると、Hudson emma プラグを使用して xml レポートを生成しようとすると問題が発生します。最終的なxmlは約750MBです
1 に答える
テストカバレッジツールが記録するデータ(プローブの場所、プローブのヒット)をどのように表すかによって、収集されたテストカバレッジデータの管理性に明らかに違いが生じます。
MSがこのデータをどのようにエンコードするかについて話すことはできませんが、結果に満足していないことは明らかです。750Mbの出力は少し上に見えることに同意します。
DLLのみをインストルメント化する場合に、すべてのメソッド/関数をインストルメント化するだけで問題が発生する可能性があります。インストルメントされるものを制御するためのスイッチを探すことをお勧めします。MSツールについてこれ以上お手伝いすることはできません。
C ++テストカバレッジでは、インストルメントするファイルだけを指定できます。プローブごとに1つのエントリを持つプローブロケーションファイルを生成しますが、そのサイズはインストルメントされたコードの量に比例し、かさばるXMLファイルではありません。インストルメントされたコードの100万行は、数メガバイトのプローブロケーションファイルを生成します。実行時に、プローブヒットデータを生成します。エクスポートされたものは、最悪の場合、プローブごとに複数形で測定され、カバレッジが低いか高い場合ははるかに小さくなります。同じ100万行の場合、これはさらに1メガバイトになると思います。
DLLをインストルメント化するようにツールを構成するのはもう少し手間がかかるでしょう。MSにはコンパイラを制御するという利点がありますが、そうではありません。実用的な答えを得るには、それは小さな代償のように思えます。