不要な抑制を削除する (IDE0079)

プロパティ
ルール ID IDE0079
Title 不要な抑制を削除する
カテゴリ CodeQuality
Subcategory 不要なコード 規則 (抑制の基本設定)
該当言語 C# および Visual Basic
[オプション] dotnet_remove_unnecessary_suppression_exclusions

概要

この規則は、ソース内の不要な pragmaSuppressMessageAttribute 属性の抑制にフラグを設定します。

ソース抑制では、ソース コードの特定の場所でコンパイラおよびアナライザーの規則違反を抑制しますが、その他の場所では抑制しません。 一般に、修正する予定のない擬陽性または重要度の低い違反を抑制するために使用します。 ただし、抑制は多くの場合、古いものとなってしまいます。 この状況は、擬陽性を防ぐためにルールが固定されている場合、またはコードをリファクタリングし、その際に抑制を冗長化する場合に、発生する可能性があります。 この規則は、削除可能な冗長の抑制を識別するのに役立ちます。

注意

規則 IDE0079 を適用すると、Visual Studio エディターで開いているファイル内の違反にのみフラグが設定されます。 これは、コマンド ライン ビルドでは使用できません。

using System.Diagnostics.CodeAnalysis;

class C1
{
    // Necessary pragma suppression
#pragma warning disable IDE0051 // IDE0051: Remove unused member
    private int UnusedMethod() => 0;
#pragma warning restore IDE0051

    // IDE0079: Unnecessary pragma suppression
#pragma warning disable IDE0051 // IDE0051: Remove unused member
    private int UsedMethod() => 0;
#pragma warning restore IDE0051

    public int PublicMethod() => UsedMethod();
}

class C2
{
    // Necessary SuppressMessage attribute suppression
    [SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "<Pending>")]
    private int _unusedField;

    // IDE0079: Unnecessary SuppressMessage attribute suppression
    [SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "<Pending>")]
    private int _usedField;

    public int PublicMethod2() => _usedField;
}

オプション

オプションでは、規則を適用する動作を指定します。 オプションの構成の詳細については、「オプションの書式」を参照してください。

dotnet_remove_unnecessary_suppression_exclusions

プロパティ 説明
オプション名 dotnet_remove_unnecessary_suppression_exclusions
オプションの値 規則 ID またはカテゴリ (category: のプレフィックス付き) の , 区切りのリスト リストの規則について抑制を除外します
all 規則を無効にします (すべての規則 ID が除外されます)
none すべての規則について規則を有効にします (除外なし)
既定のオプションの値 none
using System.Diagnostics.CodeAnalysis;

class C1
{
    // 'dotnet_remove_unnecessary_suppression_exclusions = IDE0051'

    // Unnecessary pragma suppression, but not flagged by IDE0079
#pragma warning disable IDE0051 // IDE0051: Remove unused member
    private int UsedMethod() => 0;
#pragma warning restore IDE0051

    public int PublicMethod() => UsedMethod();
}

警告を抑制する

単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。

#pragma warning disable IDE0079
// The code that's violating the rule is on this line.
#pragma warning restore IDE0079

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.IDE0079.severity = none

規則のこのカテゴリ全体を無効にするには、構成ファイルでカテゴリの重要度を none に設定します。

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目