web-dev-qa-db-ja.com

クラス全体に対して特定のコード分析警告を無効にする方法

クラス全体でコード分析ルールを無効にしようとしていますが、プロジェクト全体ではなく、1つのクラスだけです。以下の例では、単体テストメソッドは静的である必要があると考えているため、ビルドはCA1822警告を生成します。

修正は、各単体テストメソッドに次の属性を追加することです:[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]

ただし、これは面倒で、多くの単体テストでクラスが煩雑になります。

私はもう試した:

  1. 属性をクラスに移動する
  2. のすべてのメソッドをラップする

#pragma warning disable CA1822

#pragma warning restore CA1822

これらの2つのアプローチはどちらも機能していません。

public class TestClass
{
    public TestClass()
    {
        // some setup here
    }

    [Fact]
    public void My_Unit_Test1()
    {
        // the 'this' parameter is never used, causes CA warning 1822
    }

    [Fact]
    public void My_Unit_Test2()
    {
        // the 'this' parameter is never used, causes CA warning 1822
    }
}

VS2015 Update 2、.net 4.61、および新しいコード分析アナライザーを使用します。

11
SFun28

エラーリストタブの下のエラーを右クリックし、「ソース内」と「抑制ファイル内」のいずれかを選択できます。

[ソース内]を選択すると、SuppressMessageAttibuteがソースコード(メソッドまたはクラスレベル)に追加されます。

「[Assembly:SUppressMessage」がGlobalSupressions.csファイルに追加され、属性の「ターゲット」を構成できます。

スナップショットはこちら

1
angas liu

これはあなたが望んでいることではありませんが、あなたが持っている状況よりも害が少ないかもしれません。

次の属性を持つ特定のクラスを無視するようにコード分析に指示できます。

[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]

プロジェクトでは、Visual Studioオプションの[生成されたコードからの結果を抑制する(管理対象のみ)]をオンにする必要があることに注意してください。

煩わしいことですが、属性に一時的にコメントを付けると、ファイルに対してコード分析を実行することを選択できます。

0
Spritely