2016-07-07 49 views
7

コード全体を解析するルールを無効にしようとしていますが、プロジェクト全体ではなく、1つのクラスでのみ無効にしようとしています。以下の例では、ユニットテストメソッドが静的であると考えているため、ビルドによってCA1822警告が生成されます。特定のコード解析を無効にする方法クラス全体に対して警告

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

しかし、それは多くのユニットテストを持つクラスを面倒だとクラッタ。

私が試してみた:

#pragma warning disable CA1822

#pragma warning restore CA1822

どちらもこれら二つの中でクラスメソッドのすべてをラッピング

  • に属性を移動しますアプローチが働いた。

    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、および新しいコード解析アナライザを使用する。

  • +0

    このテストでは、単体テストプロジェクトで異なるコード分析ルールセットを使用しました。私はユニットテストプロジェクトには適用されなかったルールを無効にしました。 –

    +0

    @MatthewWatson - 私はテストプロジェクトにも別のルールセットを使用します。このケースでは、ルールを自分の単体テストプロジェクトに適用したいと思います。単なる特定のクラスではありません。 – SFun28

    +0

    残念ながら、これを行うことはできません。警告は常に警告/エラーが報告されるレベルに適用される必要があります。その場合、そのメソッドの警告のみを抑制することができます。 –

    答えて

    3

    これはあなたの望むものではありませんが、あなたの状況よりも悪いことではありません。あなたは、次の属性を持つ特定のクラスを無視するようにコード分析を伝えることができ

    :あなたのプロジェクトは、Visual Studioのオプションを持っている必要があります

    [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] 
    

    注「生成されたコードの結果を抑制しますが(管理のみ)」にチェック。

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

    +0

    'ExcludeFromCodeCoverage'は、アトリビュートコードを**コードカバレッジ情報**から除外する必要があることを指定します。コード分​​析からではありません。MSDNのドキュメントを参照してください(https://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.excludefromcodecoverageattribute(v=vs.110).aspx) –

    0

    [エラーリスト]タブのエラーを右クリックして、[インソース]と[抑制ファイル]を選択できます。

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

    '[アセンブリ:SUppressMessage]がGlobalSupressions.csファイルに追加され、属性の'ターゲット 'を設定できます。

    snapshot here

    関連する問題