クラス全体でコード分析ルールを無効にしようとしていますが、プロジェクト全体ではなく、1つのクラスだけです。以下の例では、単体テストメソッドは静的である必要があると考えているため、ビルドはCA1822警告を生成します。
修正は、各単体テストメソッドに次の属性を追加することです:[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
ただし、これは面倒で、多くの単体テストでクラスが煩雑になります。
私はもう試した:
#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、および新しいコード分析アナライザーを使用します。
エラーリストタブの下のエラーを右クリックし、「ソース内」と「抑制ファイル内」のいずれかを選択できます。
[ソース内]を選択すると、SuppressMessageAttibuteがソースコード(メソッドまたはクラスレベル)に追加されます。
「[Assembly:SUppressMessage」がGlobalSupressions.csファイルに追加され、属性の「ターゲット」を構成できます。
これはあなたが望んでいることではありませんが、あなたが持っている状況よりも害が少ないかもしれません。
次の属性を持つ特定のクラスを無視するようにコード分析に指示できます。
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
プロジェクトでは、Visual Studioオプションの[生成されたコードからの結果を抑制する(管理対象のみ)]をオンにする必要があることに注意してください。
煩わしいことですが、属性に一時的にコメントを付けると、ファイルに対してコード分析を実行することを選択できます。