13

カスタム実行設定ファイルを使用して、コード カバレッジを検査するプロジェクトを制御しています。Microsoft が提供する既定のテンプレートを使用しましたが、これまでのところ、必要な項目を問題なく除外できました。次のアクションは、サービス参照を追加するときに Visual Studio によって作成される自動生成された Web プロキシ クラスをコード カバレッジから除外することです。

これは、次のようなセクションがあるため、デフォルトの runsettings テンプレートで動作するはずです。

<Attributes>
    <Exclude>
        <!-- Don’t forget "Attribute" at the end of the name -->
        <Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
        <Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
        <Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
        <Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
        <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
    </Exclude>
</Attributes>

サービス参照が追加されたときに作成されたすべてのクラスは、GeneratedCodeAttribute で装飾されているため、すべて除外する必要があります。ただし、コード カバレッジを実行すると無視されないため、コード カバレッジは、カバーされていないコードの大きなブロックを報告します。属性を正しく選択するために正規表現を何度か試しましたが、役に立ちませんでした。

次のいずれかの方法に関する提案をいただければ幸いです: - この属性の除外を機能させる - プロジェクト全体を除外する必要がない、または runsettings ファイルを非汎用にする代替手段 (この基本ファイルを再利用したい)特定の編集なしですべてのプロジェクトに適用されます)

参考までに - 他のコード カバレッジ ツールがあることは理解していますが、ここでの私の目標は Visual Studio を機能させることであるため、この場合、別のツールへの切り替えに関する提案は役に立ちません。

4

4 に答える 4

12

アイデアをありがとう。これらの行を追加することになりました:

<Source>.*\\Service References\\.*</Source>
<Source>.*\\*.designer.cs*</Source>

必要な結果が得られました。このファイルの他の部分が受け入れられない理由がわからないことに、いまだにがっかりしています。

于 2012-11-26T06:21:01.447 に答える
4

属性の命名を次のように設定することで、この設定を機能させることができました。

<Attributes>
  <Exclude>
    <Attribute>.*GeneratedCodeAttribute$</Attribute>
  </Exclude>
</Attributes>

理由はわかりませんが、完全な属性名の一部が正規表現と一致しないはずです。

于 2013-03-21T13:38:31.210 に答える
4

MSDN には、コード カバレッジ分析をカスタマイズする方法を説明するページがあります

ページの下部には、属性を除外する方法を示す設定ファイルの例があり、これは上記のものと一致します。

パスによる除外など、言及されている他の除外方法をいくつか試すことができます。

<!-- Match the path of the source files in which each method is defined: -->
<Sources>
    <Exclude>
        <Source>.*\\atlmfc\\.*</Source>
        <Source>.*\\vctools\\.*</Source>
        <Source>.*\\public\\sdk\\.*</Source>
        <Source>.*\\microsoft sdks\\.*</Source>
        <Source>.*\\vc\\include\\.*</Source>
    </Exclude>
</Sources>
于 2012-11-24T21:22:32.523 に答える