Partager via


Ensemble de règles de règles de conception étendue pour le code managé

L'ensemble de règles intitulé Règles de conception étendue Microsoft s'appuie sur les directives des Règles de conception de base pour optimiser la résolution des problèmes d'utilisation et de maintenance signalés,en mettant l'accent sur l'aide liée à l'affectation de noms.Vous devez envisager d'inclure cet ensemble de règles si votre projet comprend du code de bibliothèque ou si vous souhaitez appliquer les normes les plus élevées afin d'écrire du code facile à gérer.

Les Règles de conception étendue intègrent toutes les Règles de conception de base Microsoft.Les Règles de conception de base intègrent toutes les Règles Microsoft minimales recommandées.Pour plus d'informations, consultez Ensemble de règles de règles de conception de base pour le code managé et Ensemble de règles des règles recommandées managées pour le code managé.

Le tableau suivant décrit toutes les règles de l'ensemble intitulé Règles de conception étendue Microsoft.

Règle

Description

CA1001

Les types qui possèdent des champs supprimables doivent être supprimables

CA1009

Déclarer les gestionnaires d'événements correctement

CA1016

Marquer les assemblies avec AssemblyVersionAttribute

CA1033

Les méthodes d'interface doivent pouvoir être appelées par les types enfants

CA1049

Les types qui possèdent des ressources natives doivent être supprimables

CA1060

Déplacer les P/Invokes vers une classe NativeMethods

CA1061

Ne pas masquer les méthodes de la classe de base

CA1063

Implémenter IDisposable correctement

CA1065

Ne pas lever d'exceptions dans des emplacements inattendus

CA1301

Éviter les accélérateurs en double

CA1400

Des points d'entrée P/Invoke devraient exister

CA1401

Les P/Invokes ne devraient pas être visibles

CA1403

Les types auto-structurants ne devraient pas être visibles par COM

CA1404

Appeler GetLastError immédiatement après P/Invoke

CA1405

Les types de base de type visibles par COM devraient être visibles par COM

CA1410

Les méthodes d'inscription COM devraient correspondre

CA1415

Déclarer correctement les méthodes P/Invokes

CA1821

Supprimer les finaliseurs vides

CA1900

Les champs de type valeur doivent être portables

CA1901

Les déclarations P/Invokes doivent être portables

CA2002

Ne définissez pas un verrou sur des objets à identité faible

CA2100

Rechercher des failles de sécurité dans les requêtes SQL

CA2101

Spécifiez le marshaling pour les arguments de chaîne P/Invoke

CA2108

Vérifiez la sécurité déclarative dans les types valeur

CA2111

Les pointeurs ne devraient pas être visibles

CA2112

Les types sécurisés ne devraient pas exposer de champs

CA2114

La sécurité de la méthode doit être un sur-ensemble du type

CA2116

Les méthodes APTCA doivent uniquement appeler des méthodes APTCA

CA2117

Les types APTCA doivent uniquement étendre des types de base APTCA

CA2122

N'exposez pas indirectement des méthodes avec des demandes de liaison

CA2123

Les demandes de liaison de surcharge doivent être identiques au composant de base

CA2124

Incluez dans un wrapper les clauses finally vulnérables dans un bloc try externe

CA2126

Les demandes de liaison de types nécessitent des demandes d'héritage

CA2131

Les types critiques de sécurité peuvent ne pas participer à l'équivalence des types

CA2132

Les constructeurs par défaut doivent être au moins aussi critiques que les constructeurs par défaut de type de base

CA2133

Les délégués doivent lier les méthodes avec une transparence cohérente

CA2134

Les méthodes doivent garder une transparence consistante lors de la surcharge des méthodes de base

CA2137

Les méthodes transparentes doivent contenir uniquement des IL vérifiables

CA2138

Les méthodes transparentes ne doivent pas appeler les méthodes ayant l'attribut SuppressUnmanagedCodeSecurity

CA2140

Le code transparent ne doit pas faire référence à des éléments critiques de sécurité

CA2141

Les méthodes transparentes ne doivent pas répondre aux LinkDemands

CA2146

Les types doivent être au moins aussi critiques que les types de base et les interfaces

CA2147

Les méthodes transparents pourrait ne pas utiliser les recommandations de sécruité

CA2149

Les méthodes transparentes ne doivent pas appeler du code natif

CA2200

Levez à nouveau une exception pour conserver les détails de la pile

CA2202

Ne pas supprimer des objets plusieurs fois

CA2207

Initialisez les champs statiques des types valeur sur une ligne

CA2212

Ne marquez pas les composants pris en charge avec WebMethod

CA2213

Les champs pouvant être supprimés doivent l'être

CA2214

N'appelez pas de méthodes substituables dans les constructeurs

CA2216

Les types pouvant être supprimés devraient déclarer un finaliseur

CA2220

Les finaliseurs devraient appeler le finaliseur de leur classe de base

CA2229

Implémentez des constructeurs de sérialisation

CA2231

Surcharger l'opérateur égal (equals) en surchargeant ValueType.Equals

CA2232

Marquez les points d'entrée Windows Forms avec STAThread

CA2235

Marquez tous les champs non sérialisables

CA2236

Appelez les méthodes de la classe de base sur les types ISerializable

CA2237

Marquer les types ISerializable avec SerializableAttribute

CA2238

Implémentez les méthodes de sérialisation correctement

CA2240

Implémentez correctement ISerializable

CA2241

Fournissez des arguments corrects aux méthodes de mise en forme

CA2242

Effectuez correctement des tests NaN

CA1000

Ne pas déclarer de membres statiques sur les types génériques

CA1002

Ne pas exposer de listes génériques

CA1003

Ne pas utiliser d'instances du gestionnaire d'événements génériques

CA1004

Les méthodes génériques doivent fournir un paramètre de type

CA1005

Éviter les paramètres excessifs sur les types génériques

CA1006

Ne pas imbriquer les types génériques dans les signatures de membre

CA1007

Utiliser des classes génériques lorsque cela est approprié

CA1008

Les enums doivent avoir la valeur zéro

CA1010

Les collections doivent implémenter une interface générique

CA1011

Si possible, transmettez les types de base en tant que paramètres

CA1012

Les types abstraits ne doivent pas avoir de constructeurs

CA1013

Surchargez l'opérateur égal lors de la surcharge de l'opérateur d'addition et de soustraction

CA1014

Marquer les assemblies avec CLSCompliantAttribute

CA1017

Marquer les assemblies avec ComVisibleAttribute

CA1018

Marquer les attributs avec AttributeUsageAttribute

CA1019

Définir des accesseurs pour les arguments d'attribut

CA1023

Les indexeurs ne doivent pas être multidimensionnels

CA1024

Utiliser les propriétés lorsque cela est approprié

CA1025

Remplacer les arguments répétitifs par un tableau de paramètres

CA1026

Les paramètres par défaut ne doivent pas être utilisés

CA1027

Marquer les enums avec FlagsAttribute

CA1028

Le stockage d'Enum doit être Int32

CA1030

Utiliser des événements lorsque cela est approprié

CA1031

Ne pas intercepter des types d'exception générale

CA1032

Implémenter des constructeurs d'exception standard

CA1034

Les types imbriqués ne doivent pas être visibles

CA1035

Les implémentations de ICollection possèdent des membres fortement typés

CA1036

Substituer les méthodes sur les types comparables

CA1038

Les énumérateurs doivent être fortement typés

CA1039

Les listes sont fortement typées

CA1041

Fournir un message ObsoleteAttribute

CA1043

Utiliser un argument de chaîne ou intégral pour les indexeurs

CA1044

Les propriétés ne doivent pas être en écriture seule

CA1046

Ne pas surcharger l'opérateur égal sur les types référence

CA1047

Ne pas déclarer des membres protégés dans les types sealed

CA1048

Ne pas déclarer les membres virtuels dans les types sealed

CA1050

Déclarer les types dans des espaces de noms

CA1051

Ne pas déclarer de champs d'instances visibles

CA1052

Les types de conteneurs statiques doivent être sealed

CA1053

Les types de conteneurs statiques ne doivent pas comporter de constructeur

CA1054

Les paramètres Uri ne doivent pas être des chaînes

CA1055

Les valeurs de retour Uri ne doivent pas être des chaînes

CA1056

Les propriétés Uri ne doivent pas être des chaînes

CA1057

Les surcharges d'uri de chaîne appellent les surcharges de System.Uri

CA1058

Les types ne doivent pas étendre certains types de base

CA1059

Les membres ne doivent pas exposer certains types concrets

CA1064

Les exceptions doivent être publiques

CA1500

Les noms de variables ne doivent pas être identiques aux noms de champs

CA1502

Éviter l'excès de complexité

CA1708

Les identificateurs ne doivent pas différer que par leur casse

CA1716

Les identificateurs ne doivent pas correspondre à des mots clés

CA1801

Passez en revue les paramètres inutilisés

CA1804

Supprimez les variables locales inutilisées

CA1809

Évitez le surplus de variables locales

CA1810

Initialisez les champs statiques de type référence en ligne

CA1811

Évitez le recours à du code privé non appelé

CA1812

Évitez les classes internes non instanciées

CA1813

Évitez les attributs unsealed

CA1814

Utilisez des tableaux en escalier à la place de tableaux multidimensionnels

CA1815

Surchargez Equals et l'opérateur égal dans les types valeur

CA1819

Les propriétés ne doivent pas retourner de tableaux

CA1820

Vérifiez la présence de chaînes vides en utilisant la longueur de chaîne

CA1822

Marquez les membres comme static

CA1823

Évitez les champs privés inutilisés

CA2201

Ne levez pas des types d'exceptions réservés

CA2205

Utilisez des équivalents managés de l'API Win32

CA2208

Instanciez les exceptions d'argument comme il se doit

CA2211

Les champs non constants ne doivent pas être visibles

CA2217

Ne pas marquer les enums avec FlagsAttribute

CA2219

Ne pas lever d'exceptions dans les clauses d'exception

CA2221

Les finaliseurs doivent être protégés

CA2222

Ne réduisez pas la visibilité des membres hérités

CA2223

Les membres ne doivent pas différer uniquement par leur type de retour

CA2224

Remplacez Equals au moment de surcharger l'opérateur égal

CA2225

Les surcharges d'opérateur offrent d'autres méthodes nommées

CA2226

Les opérateurs doivent contenir des surcharges symétriques

CA2227

Les propriétés de collection doivent être en lecture seule

CA2230

Utilisez le mot clé params pour les arguments de variables

CA2234

Passez des objets System.Uri à la place de chaînes

CA2239

Spécifiez des méthodes de désérialisation pour les champs facultatifs

CA1020

Éviter les espaces de noms comportant peu de types

CA1021

Éviter les paramètres out

CA1040

Éviter les interfaces vides

CA1045

Ne pas passer de types par référence

CA1062

Valider les arguments de méthodes publiques

CA1501

Éviter l'excès d'héritage

CA1504

Vérifier les noms de champs trompeurs

CA1505

Éviter le code impossible à maintenir

CA1506

Éviter les couplages de classe excessifs

CA1700

Ne nommez pas les valeurs enum 'Reserved'

CA1701

La casse des mots composés de chaînes de ressources doit être correcte

CA1702

La casse des mots composés doit être correcte

CA1703

L'orthographe des chaînes de ressources doit être correcte

CA1704

Les identificateurs doivent être correctement orthographiés

CA1707

Les identificateurs ne doivent pas contenir de traits de soulignement

CA1709

La casse des identificateurs doit être correcte

CA1710

Les identificateurs doivent être dotés d'un suffixe correct

CA1711

Les identificateurs ne doivent pas porter un suffixe incorrect

CA1712

N'ajoutez pas le nom de type en guise de préfixe à des valeurs enum

CA1713

Les événements ne doivent pas être munis d'un préfixe Before ou After

CA1714

Les énumérations d'indicateurs doivent avoir des noms au pluriel

CA1715

Les identificateurs doivent être dotés d'un préfixe correct

CA1717

Seuls les noms des enums FlagsAttribute doivent être au pluriel

CA1719

Les noms des paramètres ne doivent pas être identiques aux noms des membres

CA1720

Les identificateurs ne doivent pas contenir de noms de types

CA1721

Les noms des propriétés ne doivent pas être identiques à ceux des méthodes Get

CA1722

Les identificateurs ne doivent pas porter un préfixe incorrect

CA1724

les noms de types ne doivent pas être identiques aux espaces de noms

CA1725

Les noms de paramètres doivent correspondre à la déclaration de base

CA1726

Utilisez les termes par défaut

CA2204

Les littéraux doivent être correctement orthographiés