次の方法で共有


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

プロパティ [値]
ルール ID IDE0079
タイトル 不要な抑制を削除する
カテゴリ CodeQuality
サブカテゴリ 不要なコード規則 (抑制に関するプリファレンス)
該当言語 C# および Visual Basic
オプション dotnet_remove_unnecessary_suppression_exclusions

概要

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

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

メモ

ビルドでコード スタイル ルールを有効化した場合でも、このルールは有効になりません。 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;
}

オプション

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

メモ

option_name = value:severity の形式での重大度の設定は、dotnet_remove_unnecessary_suppression_exclusions オプションには適用されないため回避する必要があります。 代わりに、別のエントリを使用して重大度を指定します。下に例を示します。

dotnet_remove_unnecessary_suppression_exclusions = none
dotnet_diagnostic.IDE0079.severity = warning

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

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

関連項目