CA1801 : Passez en revue les paramètres inutilisés

Propriété Value
Identificateur de la règle CA1801
Titre Passez en revue les paramètres inutilisés
Catégorie Utilisation
Le correctif est cassant ou non cassant Non cassant : si le membre n’est pas visible en dehors de l’assembly, quelle que soit la modification que vous apportez.

Non cassant : si vous modifiez le membre pour utiliser le paramètre dans son corps.

Cassant : si vous supprimez le paramètre et qu’il est visible en dehors de l’assembly.
Activé par défaut dans .NET 8 Non

Cause

Une signature de méthode inclut un paramètre qui n'est pas utilisé dans le corps de la méthode.

Cette règle n’examine pas les types de méthodes suivants :

  • Méthodes référencées par un délégué.

  • Méthodes utilisées comme gestionnaires d’événements.

  • Constructeurs de sérialisation (voir les instructions).

  • Méthodes GetObjectData de sérialisation.

  • Méthodes déclarées avec le modificateur abstract (MustOverride en Visual Basic).

  • Méthodes déclarées avec le modificateur virtual (Overridable en Visual Basic).

  • Méthodes déclarées avec le modificateur override (Overrides en Visual Basic).

  • Méthodes déclarées avec le modificateur extern (instruction Declare en Visual Basic).

Cette règle n’indique pas les paramètres nommés avec le symbole discard, par exemple, _, _1 et _2. Cela réduit le bruit d’avertissement sur les paramètres qui sont nécessaires pour les exigences de signature, par exemple, une méthode utilisée comme délégué, un paramètre avec des attributs spéciaux ou un paramètre dont la valeur est implicitement accessible au moment de l’exécution par une infrastructure, mais qui n’est pas référencée dans le code.

Remarque

Cette règle a été dépréciée en faveur de IDE0060. Pour plus d’informations sur l’application de l’analyseur IDE0060 lors de la génération, consultez Analyse de style de code.

Description de la règle

Passez en revue les paramètres des méthodes non virtuelles qui ne sont pas utilisées dans le corps de la méthode pour vous assurer qu’il n’existe aucune erreur en cas d’échec d’accès à ces méthodes. Les paramètres inutilisés entraînent des coûts de maintenance et de performances.

Parfois, une violation de cette règle peut indiquer un bogue d’implémentation dans la méthode. Par exemple, le paramètre aurait dû être utilisé dans le corps de la méthode. Supprimez les avertissements de cette règle si le paramètre doit exister à des fins de compatibilité descendante.

Comment corriger les violations

Pour corriger une violation de cette règle, supprimez le paramètre inutilisé (changement cassant) ou utilisez le paramètre dans le corps de la méthode (changement non cassant).

Quand supprimer les avertissements

Vous pouvez supprimer un avertissement de cette règle :

  • Dans le code précédemment fourni pour lequel le correctif serait un changement cassant.

  • Pour le paramètre this dans une méthode d’extension personnalisée pour Microsoft.VisualStudio.TestTools.UnitTesting.Assert. Les fonctions de la classe Assert étant statiques, il n’est pas nécessaire d’accéder au paramètre this dans le corps de la méthode.

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 CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801

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.CA1801.severity = none

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

Configurer le code à analyser

Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.

Vous pouvez configurer cette option pour cette règle uniquement, pour toutes les règles auxquelles elle s’applique ou pour toutes les règles de cette catégorie (Performances) auxquelles elle s’applique. Pour plus d’informations, consultez Options de configuration des règles de qualité du code.

Inclure des surfaces d’API spécifiques

Vous pouvez configurer les parties de votre codebase sur lesquelles exécuter cette règle, en fonction de leur accessibilité. Par exemple, pour spécifier que la règle doit s’exécuter uniquement sur la surface d’API non publique, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :

dotnet_code_quality.CAXXXX.api_surface = private, internal

Par défaut, la règle CA1801 s’applique à toutes les surfaces d’API (publiques, internes et privées).

Exemple

L’exemple suivant montre deux méthodes. Une méthode enfreint la règle et l’autre méthode y satisfait.

// This method violates the rule.
public static string GetSomething(int first, int second)
{
    return first.ToString(CultureInfo.InvariantCulture);
}

// This method satisfies the rule.
public static string GetSomethingElse(int first)
{
    return first.ToString(CultureInfo.InvariantCulture);
}