Options de configuration des règles de qualité du code

Les règles de qualité du code ont des options de configuration supplémentaires, en plus de simplement configurer leur gravité. Par exemple, chaque analyseur de qualité du code peut être configuré pour s’appliquer uniquement à des parties spécifiques de votre codebase. Vous spécifiez ces options en ajoutant des paires clé-valeur au même fichier EditorConfig que celui où vous spécifiez la gravité des règles et les préférences générales de l’éditeur.

Notes

Cet article ne détaille pas comment configurer la gravité d’une règle. L'option .editorconfig permettant de définir la gravité d'une règle a un préfixe différent (dotnet_diagnostic) des options décrites ici (dotnet_code_quality). En outre, les options décrites ici concernent uniquement les règles de qualité du code, tandis que l’option de gravité s’applique également aux règles de style de code. En guise de référence rapide, vous pouvez configurer la gravité d’une règle à l’aide de la syntaxe d’option suivante :

dotnet_diagnostic.<rule ID>.severity = <severity value>

Toutefois, pour obtenir des informations détaillées sur la configuration de la gravité des règles, consultez la section Niveau de gravité.

Étendue des options

Chaque option d’affinement peut être configurée pour toutes les règles, pour une catégorie de règles (par exemple, Sécurité ou Conception) ou pour une règle spécifique.

Toutes les règles

La syntaxe de configuration d’une option pour toutes les règles est la suivante :

Syntaxe Exemple
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

Les valeurs pour <OptionName> sont répertoriées sous Options.

Catégorie de règles

La syntaxe de configuration d’une option pour une catégorie de règles est la suivante :

Syntaxe Exemple
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

Le tableau suivant répertorie les valeurs disponibles pour <RuleCategory>.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

Règle spécifique

La syntaxe de configuration d’une option pour une règle spécifique est la suivante :

Syntaxe Exemple
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Options

Cette section répertorie certaines des options disponibles. Pour afficher la liste complète des options disponibles, consultez la section Configuration de l’analyseur.

api_surface

Description Valeurs autorisées Valeur par défaut Règles configurables
Quelle partie de l’aire d’API analyser public (s’applique aux API public et protected)
internal ou friend (s’applique aux API internal et private protected)
private (s’applique aux API private)
all (s’applique à toutes les API)

Séparer plusieurs valeurs avec une virgule (,)
public CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1028 CA1030 CA1036 CA1040 CA1041 CA1043 CA1044 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA1055 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA2225 CA2226 CA2231 CA2234

exclude_async_void_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Indique s’il faut ignorer les méthodes asynchrones qui ne retournent pas de valeur true
false
false CA2007

Notes

Cette option a été nommée skip_async_void_methods dans une version antérieure.

exclude_single_letter_type_parameters

Description Valeurs autorisées Valeur par défaut Règles configurables
Indique s’il faut exclure les paramètres de type à caractère unique de la règle, par exemple, S dans Collection<S> true
false
false CA1715

Notes

Cette option a été nommée allow_single_letter_type_parameters dans une version antérieure.

output_kind

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie que le code d’un projet qui génère ce type d’assembly doit être analysé Un ou plusieurs champs de l’énumération OutputKind

Séparer plusieurs valeurs avec une virgule (,)
Tous les types de sortie CA2007

required_modifiers

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les modificateurs requis pour les API qui doivent être analysées Une ou plusieurs valeurs de la table des modificateurs autorisés ci-dessous

Séparer plusieurs valeurs avec une virgule (,)
Dépend de chaque règle CA1802
Modificateur autorisé Résumé
none Aucune exigence de modificateur
static ou Shared Doit être déclaré comme static (Shared en Visual Basic)
const Doit être déclaré comme const
readonly Doit être déclaré comme readonly
abstract Doit être déclaré comme abstract
virtual Doit être déclaré comme virtual
override Doit être déclaré comme override
sealed Doit être déclaré comme sealed
extern Doit être déclaré comme extern
async Doit être déclaré comme async

exclude_extension_method_this_parameter

Description Valeurs autorisées Valeur par défaut Règles configurables
Indique s’il faut ignorer l’analyse pour le paramètre this des méthodes d’extension true
false
false CA1062

null_check_validation_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Noms des méthodes de contrôle de valeur null qui valident que les arguments passés à la méthode ne sont pas nuls Formats de nom de méthode autorisés (séparés par |) :
- Nom de la méthode uniquement (inclut toutes les méthodes portant le nom, quel que soit le type ou l’espace de noms conteneur)
- Noms qualifiés complets au format d’ID de documentation du symbole, avec un préfixe M: facultatif
None CA1062

additional_string_formatting_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Noms des méthodes de mise en forme de chaîne supplémentaires Formats de nom de méthode autorisés (séparés par |) :
- Nom de la méthode uniquement (inclut toutes les méthodes portant le nom, quel que soit le type ou l’espace de noms conteneur)
- Noms qualifiés complets au format d’ID de documentation du symbole, avec un préfixe M: facultatif
None CA2241

excluded_type_names_with_derived_types

Description Valeurs autorisées Valeur par défaut Règles configurables
Noms de types, de sorte que le type et tous ses types dérivés sont exclus pour l’analyse Formats de nom de symbole autorisés (séparés par |) :
- Nom du type uniquement (inclut tous les types avec le nom, quel que soit le type ou l’espace de noms qui les contient)
- Noms qualifiés complets au format d’ID de documentation du symbole, avec un préfixe T: facultatif
Aucune CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

excluded_symbol_names

Description Valeurs autorisées Valeur par défaut Règles configurables
Noms de symboles exclus pour l’analyse Formats de nom de symbole autorisés (séparés par |) :
- Nom du symbole uniquement (inclut tous les symboles avec le nom, quel que soit le type ou l’espace de noms qui les contient)
- Noms qualifiés complets au format d’ID de documentation du symbole. Chaque nom de symbole nécessite un préfixe de type symbole, comme le préfixe M: pour les méthodes, le préfixe T: pour les types et le préfixe N: pour les espaces de noms.
- .ctor pour les constructeurs et .cctor pour les constructeurs statiques
Aucune CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

disallowed_symbol_names

Description Valeurs autorisées Valeur par défaut Règles configurables
Noms de symboles non autorisés dans le contexte de l’analyse Formats de nom de symbole autorisés (séparés par |) :
- Nom du symbole uniquement (inclut tous les symboles avec le nom, quel que soit le type ou l’espace de noms qui les contient)
- Noms qualifiés complets au format d’ID de documentation du symbole. Chaque nom de symbole nécessite un préfixe de type symbole, comme le préfixe M: pour les méthodes, le préfixe T: pour les types et le préfixe N: pour les espaces de noms.
- .ctor pour les constructeurs et .cctor pour les constructeurs statiques
None CA1031

exclude_ordefault_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Exclut les méthodes FirstOrDefault et LastOrDefault de l’analyse. true ou false false CA1826

ignore_internalsvisibleto

Description Valeurs autorisées Valeur par défaut Règles configurables
Inclut les assemblies marqués avec InternalsVisibleToAttribute dans l’analyse. true ou false true CA1812 CA1852

try_determine_additional_string_formatting_methods_automatically

Description Valeurs autorisées Valeur par défaut Règles configurables
Option booléenne pour activer la détection heuristique de méthodes de mise en forme de chaîne supplémentaires.
Une méthode est considérée comme une méthode de mise en forme de chaîne si elle possède un paramètre string format suivi d’un paramètre params object[].
true ou false false CA2241

unsafe_DllImportSearchPath_bits

Description Valeurs autorisées Valeur par défaut Règles configurables
Configurer la valeur de DllImportSearchPath potentiellement dangereuse pour l’analyse Valeurs entières de System.Runtime.InteropServices.DllImportSearchPath 770 (autrement dit, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Description Valeurs autorisées Valeur par défaut Règles configurables
Exclure ASP.NET Core MVC ControllerBase lors de l’examen de falsification de requête intersites (CSRF, Cross Site Request Forgery) true ou false true CA5391

dispose_analysis_kind

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les chemins d’accès à analyser pour les violations Dispose - AllPaths – Suivre et signaler les violations Dispose manquantes sur tous les chemins d’accès (chemins d’accès de non-exception et d’exception). Marquer également l’utilisation de modèles Dispose non recommandés susceptibles de provoquer des fuites Dispose.
- AllPathsOnlyNotDisposed – Suivre et signaler les violations Dispose manquantes sur tous les chemins d’accès (chemins d’accès de non-exception et d’exception). Ne pas marquer l’utilisation de modèles Dispose non recommandés susceptibles de provoquer des fuites Dispose.
- NonExceptionPaths – Suivre et signaler les violations Dispose manquantes uniquement sur les chemins d’accès de programme de non-exception. Marquer également l’utilisation de modèles Dispose non recommandés susceptibles de provoquer des fuites Dispose.
- NonExceptionPathsOnlyNotDisposed – Suivre et signaler les violations Dispose manquantes uniquement sur les chemins d’accès de programme de non-exception. Ne pas marquer l’utilisation de modèles Dispose non recommandés susceptibles de provoquer des fuites Dispose.
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

Description Valeurs autorisées Valeur par défaut Règles configurables
Configurer le transfert de propriété Dispose pour les arguments passés à l’appel du constructeur true ou false false CA2000

dispose_ownership_transfer_at_method_call

Description Valeurs autorisées Valeur par défaut Règles configurables
Configurer le transfert de propriété Dispose pour les objets supprimables passés en tant qu’arguments aux appels de méthode true ou false false CA2000

enum_values_prefix_trigger

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie le seuil pour déclencher la règle de nommage des valeurs enum - AnyEnumValue – La règle est déclenchée si l’une des valeurs enum commence par le nom du type enum.
- AllEnumValues – La règle est déclenchée si toutes les valeurs enum commencent par le nom du type enum.
- Heuristic – La règle est déclenchée à l’aide de l’heuristique FxCop par défaut (c’est-à-dire quand au moins 75 % des valeurs enum commencent par le nom du type enum).
Heuristic CA1712

exclude_indirect_base_types

Description Valeurs autorisées Valeur par défaut Règles configurables
Exclure les types de base indirects true ou false true CA1710

additional_required_suffixes

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les suffixes supplémentaires requis Liste des noms de types (séparés par |) avec leur suffixe requis (séparé par ->). Formats de nom de type autorisés :
– Nom de type uniquement (inclut tous les types portant le nom, quel que soit le type ou l’espace de noms qui les contient).
– Noms complets au format d’ID de documentation du symbole, avec un préfixe T: facultatif.
Aucun CA1710

additional_required_generic_interfaces

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les interfaces génériques supplémentaires requises Liste des noms d’interface (séparés par |) avec leur interface complète générique requise (séparée par ->). Formats d’interface autorisés :
– Nom d’interface uniquement (inclut toutes les interfaces portant le nom, quel que soit le type ou l’espace de noms qui les contient).
– Noms complets au format d’ID de documentation du symbole, avec un préfixe T: facultatif.
Aucun CA1010

Exemples :

Valeur d’option Résumé
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 Tous les types implémentant ISomething indépendamment de son espace de noms doivent également implémenter System.Collections.Generic.IEnumerable\`1.
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 Tous les types implémentant System.Collections.IDictionary sont censés également implémenter System.Collections.Generic.IDictionary`2.

additional_inheritance_excluded_symbol_names

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les types ou les espaces de noms à exclure de l’arborescence de hiérarchie d’héritage Formats de nom de type autorisés :
– Nom de type ou d’espace de noms (inclut tous les types portant le nom, quel que soit le type ou l’espace de noms qui les contient, et tous les types dont l’espace de noms contient le nom).
– Nom de type ou d’espace de noms se terminant par un symbole générique (inclut tous les types dont le nom commence par le nom donné, quel que soit le type ou l’espace de noms qui les contient, et tous les types dont l’espace de noms contient le nom).
– Noms complets au format d’ID de documentation du symbole, avec un préfixe T: facultatif pour les types ou un préfixe N: facultatif pour les espaces de noms.
– Nom de type complet ou d’espace de noms avec un préfixe T: facultatif pour un type ou préfixe N: facultatif pour l’espace de noms et se terminant par le symbole générique (inclut tous les types dont le nom complet commence par le nom de type donné ou tous les autres types dont le nom complet commence par le nom d’espace de noms donné).
N:System.* (cette valeur est toujours ajoutée automatiquement à la valeur fournie) CA1501

analyzed_symbol_kinds

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les genres de symboles à analyser Un ou plusieurs champs de SymbolKind sous la forme d’une liste de valeurs séparées par des virgules. Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

Description Valeurs autorisées Valeur par défaut Règles configurables
Configure si les paramètres ou les noms de propriétés contenant Text, Message ou Caption déclenchent cette règle true ou false false CA1303

additional_use_results_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie des API personnalisées supplémentaires dont les résultats doivent être utilisés Noms des méthodes supplémentaires (séparés par |). Formats de nom de méthode autorisés :
– Nom de méthode uniquement (inclut toutes les méthodes portant le nom, quel que soit le type ou l’espace de noms qui les contient).
– Noms complets au format d’ID de documentation du symbole avec un préfixe M: facultatif.
Aucun CA1806

allowed_suffixes

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les suffixes autorisés Liste des suffixes autorisés (séparés par |). Aucun CA1711

enable_platform_analyzer_on_pre_net5_target

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie s’il faut activer l’analyse des TFM avant .NET 5 true ou false false CA1416

exclude_structs

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie s’il faut exclure les structs de l’analyse true ou false false CA1051

additional_enum_none_names

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie des noms autorisés supplémentaires pour un champ d’énumération de valeur zéro Liste de noms supplémentaires (séparés par |). Aucun CA1008

enumeration_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les méthodes personnalisées supplémentaires qui énumèrent un IEnumerable Noms complets des méthodes supplémentaires (séparés par |). Aucun CA1851

linq_chain_methods

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie les méthodes de chaîne LINQ personnalisées supplémentaires (autrement dit, les méthodes prennent un argument IEnumerable et retournent une nouvelle instance de IEnumerable) Noms complets des méthodes supplémentaires (séparés par |). Aucun CA1851

assume_method_enumerates_parameters

Description Valeurs autorisées Valeur par défaut Règles configurables
Spécifie s’il faut partir du principe que les méthodes personnalisées énumèrent leurs paramètres IEnumerable true ou false false CA1851