Langage et règles inutiles
Les règles de langage de style code affectent la façon dont les différentes constructions des langages de programmation .NET, par exemple, les modificateurs et les parenthèses, sont utilisées.
Cette catégorie inclut également des règles qui identifient les parties de la base de code qui sont inutiles et qui peuvent être refactorisées ou supprimées. La présence de code inutile indique l’un des problèmes suivants :
- Lisibilité : code qui dégrade inutilement la lisibilité.
- Maintenabilité : code qui n’est plus utilisé après la refactorisation et qui est inutilement maintenu.
- Performances : calcul inutile qui n’a aucun effet secondaire et entraîne une surcharge de performances inutile.
- Fonctionnalité : problème fonctionnel dans le code entraînant la redondance du code requis. Par exemple, IDE0060 indique les paramètres inutilisés où la méthode ignore accidentellement un paramètre d’entrée.
Les règles de langage sont réparties dans les catégories suivantes :
- Règles de style .NET : règles qui s’appliquent à la fois à C# et à Visual Basic. Les noms d’options pour ces règles commencent par le préfixe
dotnet_style_
. - Règles de style C# : règles spécifiques au code C#. Les noms d’options pour ces règles commencent par le préfixe
csharp_style_
. - Règles de style Visual Basic : règles spécifiques au code Visual Basic. Les noms d’options pour ces règles commencent par le préfixe
visual_basic_style_
.
Format de l’option
La plupart des règles de langage ont une ou plusieurs options associées pour personnaliser le style préféré. Par exemple, Utiliser une instruction « using » simple (IDE0063) présente l’option associée csharp_prefer_simple_using_statement
qui vous permet de définir si vous préférez une déclaration using
ou une instruction using
. La règle applique les options que vous choisissez à un niveau spécifié, par exemple, un avertissement ou une erreur.
Les options pour les règles de langue peuvent être spécifiées dans un fichier config au format suivant :
option_name = value
(Visual Studio 2019 et ultérieur)
ou
option_name = value:severity
Valeur
Pour chaque convention de langage, vous spécifiez une valeur qui définit si ou quand favoriser ce style. De nombreuses règles acceptent une valeur de
true
(préférer ce style) oufalse
(ne pas préférer ce style). D’autres règles acceptent des valeurs telles quewhen_on_single_line
ounever
.Gravité (facultatif dans Visual Studio 2019 et versions ultérieures)
La seconde partie de la règle spécifie le niveau de gravité pour la règle. Dans .NET 9 et versions ultérieures, la gravité est toujours respectée, c’est-à-dire dans les ID de développement et pendant les builds de ligne de commande. Dans .NET 8 et versions antérieures, ce paramètre de gravité est uniquement respecté dans les ID de développement, tels que Visual Studio, et non pendant la génération.
Si vous utilisez le Kit de développement logiciel (SDK) .NET 8 ou une version antérieure et que vous souhaitez que la gravité soit respectée au moment de la génération, vous pouvez le faire de deux manières :
- Définissez la propriété AnalysisLevel> sur
<AnalysisLevelStyle>
ou une valeur supérieure, ou surpreview
.9.0
< - Définissez la gravité à l’aide de la syntaxe de configuration de gravité basée sur l’ID de règle pour les analyseurs à la place. La syntaxe prend la forme
dotnet_diagnostic.<rule ID>.severity = <severity>
, par exemple,dotnet_diagnostic.IDE0040.severity = warning
. Pour plus d’informations, consultez niveau de gravité.
- Définissez la propriété AnalysisLevel> sur
Conseil
À partir de Visual Studio 2019, vous pouvez configurer des règles de style de code à partir du menu Ampoule Actions rapides après une violation de style.
Index de règle
Les règles de langage et de code inutiles sont classées en sous-catégories, telles que les préférences au niveau de l’expression, les préférences de bloc de code et les préférences de modificateur.
- Préférences pour la directive
using
- Préférences relatives aux blocs de code
- Membres expression-bodied
- Préférences au niveau des expressions
- Préférences de champ
- Préférences de mot clé de langage par rapport aux types d’infrastructure
- Préférences relatives aux modificateurs
- Préférences de nouvelle ligne
- Préférences de vérification de valeur null
- Préférences relatives aux paramètres
- Préférences relatives aux parenthèses
- Pattern-matching preferences
- Préférences de suppression
- Préférences
This.
etme.
- Préférences
var
Préférences pour la directive using
Règles de style .NET (C# et Visual Basic) :
Règles de style C# :
Préférences relatives aux blocs de code
Règles de style C# :
- Ajouter des accolades (IDE0011)
- Utiliser une instruction « using » simple (IDE0063)
- Préférences de déclaration d’espace de noms (IDE0160, IDE0161)
- Supprimer l’expression lambda inutile (IDE0200)
- Convertir en instructions de niveau supérieur (IDE0210)
- Convertir en programme de style « Program.Main » (IDE0211)
- Utiliser le constructeur principal (IDE0290)
Membres expression-bodied
Règles de style C# :
- Utiliser un corps d'expression pour les constructeurs (IDE0021)
- Utiliser un corps d'expression pour les méthodes (IDE0022)
- Utiliser le corps d’expression pour les opérateurs (IDE0023, IDE0024)
- Utiliser un corps d'expression pour les propriétés (IDE0025)
- Utiliser un corps d'expression pour les indexeurs (IDE0026)
- Utiliser un corps d'expression pour les accesseurs (IDE0027)
- Utiliser un corps d'expression pour les expressions lambda (IDE0053)
- Utiliser un corps d'expression pour des fonctions locales (IDE0061)
Préférences au niveau des expressions
Règles de style .NET (C# et Visual Basic) :
- Simplifier le nom (IDE0001)
- Simplifier l’accès au membre (IDE0002)
- Supprimer un cast inutile (IDE0004)
- Ajouter des casses manquantes à l’instruction switch (IDE0010)
- Utiliser des initialiseurs d’objets (IDE0017)
- Utiliser des initialiseurs de collections (IDE0028)
- La vérification de valeur nulle peut être simplifiée (IDE0029, IDE0030, IDE0270)
- Utiliser la propagation nulle (IDE0031)
- Utiliser la propriété implémentée automatiquement (IDE0032)
- Utiliser le nom de tuple fourni explicitement (IDE0033)
- Supprimer un code inaccessible (IDE0035)
- Utiliser des noms de membres déduits (IDE0037)
- Utiliser la vérification « is null » (IDE0041)
- Utiliser une expression conditionnelle pour l’affectation (IDE0045)
- Utiliser une expression conditionnelle pour le retour (IDE0046)
- Convertir un type anonyme en tuple (IDE0050)
- Supprimer un membre privé non utilisé (IDE0051)
- Supprimer un membre privé non lu (IDE0052)
- Utiliser l’affectation composée (IDE0054, IDE0074)
- Supprimer la valeur d’expression inutile (IDE0058)
- Supprimer une affectation de valeur inutile (IDE0059)
- Utiliser « System.HashCode.Combine » (IDE0070)
- Simplifier l’interpolation (IDE0071)
- Simplifier l’expression conditionnelle (IDE0075)
- Convertir
typeof
ennameof
(IDE0082) - Supprimer l’opérateur d’égalité inutile (IDE0100)
- Simplifier une expression LINQ (IDE0120)
- L’espace de noms ne correspond pas à la structure des dossiers (IDE0130)
Règles de style C# :
- Utiliser l’expression throw (IDE0016)
- Déclaration de variable inlined (IDE0018)
- Simplifier l'expression « par défaut » (IDE0034)
- Utiliser une fonction locale au lieu d’une fonction lambda (IDE0039)
- Déconstruire la déclaration de variables (IDE0042)
- Utiliser un opérateur d’index (IDE0056)
- Utiliser un opérateur de plages (IDE0057)
- Ajouter des cas manquants à l’expression switch (IDE0072)
- Supprimer l’opérateur de suppression inutile (IDE0080)
- Simplifier l’expression
new
(IDE0090) - Supprimer tout discard inutile (IDE0110)
- Préférer la vérification « null » à la vérification de type (IDE0150)
- Utiliser un tuple pour échanger des valeurs (IDE0180)
- Ajouter un cast explicite dans la boucle foreach (IDE0220)
- Utiliser le littéral de chaîne UTF-8 (IDE0230)
- La directive Nullable est redondante (IDE0240)
- La directive Nullable est inutile (IDE0241)
- Utiliser l’expression de collection pour le tableau (IDE0300)
- Utiliser l’expression de collection pour vide (IDE0301)
- Utiliser l’expression de collection pour l’alloc de pile (IDE0302)
- Utiliser l’expression de collection pour
Create()
(IDE0303) - Utiliser l’expression de collection pour le générateur (IDE0304
- Utiliser l’expression de collection pour fluent (IDE0305)
Règles de style Visual Basic :
- Supprimer
ByVal
(IDE0081) - Utiliser des critères spéciaux (opérateur
IsNot
) (IDE0084) - Simplifier la création d’objets (IDE0140)
Préférences de champ
Règles de style .NET (C# et Visual Basic) :
Préférences de mot clé de langage par rapport aux types d’infrastructure
Règles de style .NET (C# et Visual Basic) :
Préférences relatives aux modificateurs
Règles de style .NET (C# et Visual Basic) :
Règles de style C# :
- Rendre la fonction locale statique (IDE0062)
- Rendre les champs de struct accessibles en écriture (IDE0064)
- Struct peut être rendu 'readonly' (IDE0250)
- Le membre peut être créé en « lecture seule » (IDE0251)
Préférences de nouvelle ligne
- Autoriser plusieurs lignes vides (IDE2000)
- Autoriser les instructions imbriquées sur la même ligne (IDE2001)
- Autoriser les lignes vides entre les accolades consécutives (IDE2002)
- Autoriser l'instruction juste après le bloc (IDE2003)
- Autoriser une ligne vide après le signe des deux-points dans l'initialiseur du constructeur (IDE2004)
- Autoriser une ligne vide après le jeton dans l’expression conditionnelle (IDE2005)
- Autoriser une ligne vide après le jeton dans l’expression fléchée (IDE2006)
Préférences de vérification de valeur null
Règles de style C# :
Préférences relatives aux paramètres
Règles de style .NET (C# et Visual Basic) :
Préférences relatives aux parenthèses
Règles de style .NET (C# et Visual Basic) :
Pattern-matching preferences
Règles de style C# :
- Utiliser la correspondance de modèle pour éviter « as » suivi d’une vérification « nulle » (IDE0019)
- Utiliser la correspondance de modèle pour éviter la vérification « is » suivie d’un cast (IDE0020, IDE0038)
- Utiliser l'expression switch (IDE0066)
- Utiliser la correspondance de modèles (IDE0078 et IDE0260)
- Utiliser des critères spéciaux (opérateur
not
) (IDE0083) - Simplifier le modèle de propriété (IDE0170)
Préférences de suppression
Règles de style .NET (C# et Visual Basic) :
Préférences This.
et me.
Règles de style .NET (C# et Visual Basic) :
Préférences var
Règles de style C# :