Élimination de la suppression inutile (IDE0079)

Propriété Value
Identificateur de la règle IDE0079
Titre Élimination de la suppression inutile
Catégorie CodeQuality
Sous-catégorie Règles de code inutiles (préférences de la suppression)
Langages applicables C# et Visual Basic
Options dotnet_remove_unnecessary_suppression_exclusions

Vue d’ensemble

Cette règle signale les suppressions inutiles d’attributs pragma et SuppressMessageAttribute dans la source.

Les suppressions dans la source suppriment les violations des règles du compilateur et de l’analyseur à des endroits spécifiques, mais pas dans d’autres parties du code source. Vous les utilisez généralement pour supprimer les faux positifs ou les violations moins importantes que vous n’avez pas l’intention de corriger. Toutefois, les suppressions deviennent souvent obsolètes. Cela peut se produire quand une règle est corrigée pour éviter les faux positifs ou si vous refactorisez votre code et que cela entraîne une redondance des suppressions. Cette règle vous aide à identifier les suppressions redondantes, qui peuvent ensuite être supprimées.

Remarque

Même si vous activez des règles de style de code sur la build, cette règle n’est pas activée. Elle s’affiche uniquement dans l’éditeur Visual Studio.

Exemple

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;
}

Options

Les options spécifient le comportement que vous souhaitez que la règle applique. Pour plus d’informations sur la configuration des options, consultez Format d’option.

dotnet_remove_unnecessary_suppression_exclusions

Propriété Valeur Description
Nom d'option dotnet_remove_unnecessary_suppression_exclusions
Valeurs d’option Liste d’ID ou de catégories de règles (avec le préfixe category:) séparés par des virgules (,) Exclut les suppressions pour les règles listées
all Désactive la règle (exclusion de tous les ID de règle)
none Active la règle pour toutes les règles (aucune exclusion)
Valeur d’option par défaut 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();
}

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour désactiver la catégorie entière des règles, définissez la gravité de la catégorie sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Voir aussi