C#-カスタムの古い警告を選択的に抑制する


212

Obsolete特定のメソッドが使用されている場合に警告を表示するために、(他のプログラマーが提案したように)属性を使用しています。

SuppressMessage使用が正当化されるポイントで、CodeAnalysisのような警告を抑制する方法はありますか?

ありがとうございました!

編集

これは[Obsolete("Some message")]、警告に関する詳細を含める必要があるためです。ただし、#pragma warning disable 612naked [Obsolete]属性にメッセージを追加すると、機能しなくなります...

編集2

正しい警告番号が見つかりました- 廃止された属性の後にメッセージがある場合は618です。

だから私がやりたいことをするために:

#pragma warning disable 618

そして電話の後

#pragma warning restore 618

私を正しい方向に向けてくれたJared ParとJon Skeetに感謝します!

回答:


257

使用#pragma warning disable

using System;

class Test
{
    [Obsolete("Message")]
    static void Foo(string x)
    {
    }

    static void Main(string[] args)
    {
#pragma warning disable 0618
        // This one is okay
        Foo("Good");
#pragma warning restore 0618

        // This call is bad
        Foo("Bad");
    }
}

後で警告を元に戻して、「悪い」呼び出しを見逃さないようにします。


1
これが機能するのは、廃止属性を使用してメッセージを指定しない場合のみです。次のようなメッセージが表示されます:[廃止(「これが使用されない理由です。XYZを使用してください。」)メッセージを入力すると、プラグマ警告無効612が機能を停止し、関係なく警告が表示されます。代わりに別のエラーIDが必要ですか?
Alex

2
見つかった-廃止された属性にメッセージがある場合、正しい警告番号は618です。ありがとうございました!
Alex

2
グド-これに合うようにサンプルを調整しました。
Jon Skeet、

6
@George:ここで見つけることができます。
ジョルダン

3
最初に警告/エラー番号を取得する方法に関する私の答えを参照してください。
アーロン・トーマ

130

その意図は、構成がまたはでマークされているかどうかに関係なく、廃止された使用に関する警告を無効にすることです。したがって、CS0612 CS0618の両方を使用します。[Obsolete][Obsolete("Message")]

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

3
また、廃止された用法が廃止されたとマークされているクラス内にある場合、警告は発生しません。
redcalx 2014

3
エラーとしてObsoleteマークされた場合に、エラーを無効にする方法はありますか?
Shimmy Weitzhandler、2015年

2
@Shimmy:エラーとしてマークされている場合は、修正する必要があります。エラーを抑制する方法はありません。構文の問題かもしれません。このサイトに質問として投稿してください。そうすれば、良い答えが得られます。
ジョルダン

18

ここだ警告/エラー番号を取得する方法を最初の場所で:

  1. プロジェクトをリビルドします。
  2. 出力ウィンドウに移動します。
  3. 抑制したい警告/エラーの行を調べます。
    例えば:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. 「」のの数字部分をコピーしCSます。
  5. 次に、ジョン・スキートが言うように進んでください。

Jon Skeetが言うように、常に先に進んでください…)


9

#pragma警告無効化ディレクティブを探しています

基本的に、.csファイルの呼び出しサイトの上に次のコマンドを追加します。

#pragma warning disable 612
SomeMethodCall

612は、廃止されたメソッドを呼び出すためのエラーメッセージIDです。


これが機能するのは、廃止属性を使用してメッセージを指定しない場合のみです。次のようなメッセージが表示されます:[廃止(「これが使用されない理由です。XYZを使用してください。」)メッセージを入力すると、プラグマ警告無効612が機能を停止し、関係なく警告が表示されます。代わりに別のエラーIDが必要ですか?
Alex

2
見つかった-廃止された属性にメッセージがある場合、正しい警告番号は618です。
Alex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.