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
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
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 |