Ensemble de règles de règles de conception étendue pour le code managéExtended Design Guidelines Rules rule set for managed code

L’ensemble de règles intitulé règles de conception étendue Microsoft s’appuie sur les règles de conception de base pour optimiser les facilité d’utilisation et de facilité de maintenance les problèmes signalés.The Microsoft Extended Design Guideline Rules rule set expands on the basic design guideline rules to maximize the usability and maintainability issues that are reported. L’accent sur l’affectation de noms.Extra emphasis is placed on naming guidelines. Pensez à inclure cet ensemble de règles si votre projet contient du code de bibliothèque ou si vous souhaitez appliquer les normes optimales pour écrire du code facile à maintenir.You should consider including this rule set if your project includes library code or if you want to enforce the highest standards for writing code that is easy to maintain.

Les règles de conception étendue comprennent tous les Microsoft conception les règles de base.The Extended Design Guideline Rules include all of the Microsoft Basic Design Guideline Rules. Les règles de conception de base incluent toutes les règles Microsoft minimales recommandées.The Basic Design Guideline Rules include all of the Microsoft Minimum Recommended Rules. Pour plus d’informations, consultez règle des règles de conception de base défini pour le code managé et gérés recommandé de règles défini pour le code managéFor more information, see Basic Design Guideline Rules rule set for managed code and Managed Recommended Rules rule set for managed code

Le tableau suivant décrit toutes les règles dans l’ensemble de règles intitulé règles de conception étendue Microsoft.The following table describes all the rules in the Microsoft Extended Design Guideline Rules rule set.

RègleRule DescriptionDescription
CA1001CA1001 Les types qui possèdent des champs supprimables doivent être supprimablesTypes that own disposable fields should be disposable
CA1009CA1009 Déclarer les gestionnaires d’événements correctementDeclare event handlers correctly
CA1016CA1016 Marquer les assemblys avec AssemblyVersionAttributeMark assemblies with AssemblyVersionAttribute
CA1033CA1033 Méthodes d’interface doivent pouvoir être appelées par les types enfantsInterface methods should be callable by child types
CA1049CA1049 Les types qui possèdent des ressources natives doivent être supprimablesTypes that own native resources should be disposable
CA1060CA1060 Déplacer les P/Invoke vers une classe NativeMethodsMove P/Invokes to NativeMethods class
CA1061CA1061 Ne pas masquer les méthodes de classe de baseDo not hide base class methods
CA1063CA1063 Implémenter IDisposable correctementImplement IDisposable correctly
CA1065CA1065 Ne pas lever d’exceptions dans des emplacements inattendusDo not raise exceptions in unexpected locations
CA1301CA1301 Éviter les accélérateurs en doubleAvoid duplicate accelerators
CA1400CA1400 Points d’entrée P/Invoke doivent existerP/Invoke entry points should exist
CA1401CA1401 P/Invoke ne doivent pas être visibleP/Invokes should not be visible
CA1403CA1403 Les types Structurer automatiquement ne doivent pas être visibles par COMAuto layout types should not be COM visible
CA1404CA1404 Appeler GetLastError immédiatement après P/InvokeCall GetLastError immediately after P/Invoke
CA1405CA1405 Types base type visibles par COM doivent être visibles par COMCOM visible type base types should be COM visible
CA1410CA1410 Méthodes d’inscription COM doivent être mises en correspondance.COM registration methods should be matched
CA1415CA1415 Déclarer correctement les méthodes P/InvokeDeclare P/Invokes correctly
CA1821CA1821 Supprimez les finaliseurs videsRemove empty finalizers
CA1900CA1900 Champs de type valeur doivent être portablesValue type fields should be portable
CA1901CA1901 Les déclarations P/Invoke doivent être portablesP/Invoke declarations should be portable
CA2002CA2002 Ne verrouillent pas sur des objets à identité faibleDo not lock on objects with weak identity
CA2100CA2100 Passez en revue les requêtes SQL des failles de sécuritéReview SQL queries for security vulnerabilities
CA2101CA2101 Spécifiez le marshaling pour les arguments de chaîne P/InvokeSpecify marshaling for P/Invoke string arguments
CA2108CA2108 Vérifiez la sécurité déclarative dans les types valeurReview declarative security on value types
CA2111CA2111 Les pointeurs ne doivent pas être visiblesPointers should not be visible
CA2112CA2112 Types sécurisés ne doivent pas exposer de champsSecured types should not expose fields
CA2114CA2114 Sécurité de la méthode doit être un sur-ensemble du typeMethod security should be a superset of type
CA2116CA2116 Les méthodes APTCA doivent uniquement appeler des méthodes APTCAAPTCA methods should only call APTCA methods
CA2117CA2117 Les types APTCA doivent uniquement étendre des types de base APTCAAPTCA types should only extend APTCA base types
CA2122CA2122 N’exposez pas indirectement des méthodes avec des demandes de liaisonDo not indirectly expose methods with link demands
CA2123CA2123 Les demandes de liaison de remplacement doivent être identiques à la baseOverride link demands should be identical to base
CA2124CA2124 Finally vulnérables clauses dans externe tryWrap vulnerable finally clauses in outer try
CA2126CA2126 Liaison de types nécessitent des demandes d’héritageType link demands require inheritance demands
CA2131CA2131 Les types critiques de sécurité ne peuvent pas faire partie de l’équivalence de typeSecurity critical types may not participate in type equivalence
CA2132CA2132 Constructeurs par défaut doivent être au moins aussi critiques que les constructeurs par défaut de type de baseDefault constructors must be at least as critical as base type default constructors
CA2133CA2133 Les délégués doivent lier les méthodes avec une transparence cohérenteDelegates must bind to methods with consistent transparency
CA2134CA2134 Transparence des méthodes doivent rester cohérente lors de la substitution de méthodes de baseMethods must keep consistent transparency when overriding base methods
CA2137CA2137 Les méthodes transparentes doivent contenir uniquement des IL vérifiablesTransparent methods must contain only verifiable IL
CA2138CA2138 Les méthodes transparentes ne doivent pas appeler les méthodes avec l’attribut SuppressUnmanagedCodeSecurityTransparent methods must not call methods with the SuppressUnmanagedCodeSecurity attribute
CA2140CA2140 Le code transparent ne doit pas faire référence à des éléments critiques de sécuritéTransparent code must not reference security critical items
CA2141CA2141 Les méthodes transparentes ne répondent pas aux LinkDemandsTransparent methods must not satisfy LinkDemands
CA2146CA2146 Types doivent être au moins aussi critiques que leurs types de base et les interfacesTypes must be at least as critical as their base types and interfaces
CA2147CA2147 Les méthodes transparentes ne peuvent pas utiliser de sécurité des assertionsTransparent methods may not use security asserts
CA2149CA2149 Les méthodes transparentes ne doivent pas appeler dans du code natifTransparent methods must not call into native code
CA2200CA2200 Levez de nouveau pour conserver les détails de la pileRethrow to preserve stack details
CA2202CA2202 Ne pas supprimer des objets plusieurs foisDo not dispose objects multiple times
CA2207CA2207 Initialiser les champs statiques de type valeur en ligneInitialize value type static fields inline
CA2212CA2212 Ne marquez pas les composants pris en charge avec WebMethodDo not mark serviced components with WebMethod
CA2213CA2213 Des champs supprimables doivent être supprimés.Disposable fields should be disposed
CA2214CA2214 N’appelez pas de méthodes substituables dans les constructeursDo not call overridable methods in constructors
CA2216CA2216 Types pouvant être supprimés doivent déclarer un finaliseurDisposable types should declare finalizer
CA2220CA2220 Les finaliseurs doivent appeler le finaliseur de la classe de baseFinalizers should call base class finalizer
CA2229CA2229 Implémentez des constructeurs de sérialisationImplement serialization constructors
CA2231CA2231 Surchargez l’opérateur equals en remplaçant ValueType.EqualsOverload operator equals on overriding ValueType.Equals
CA2232CA2232 Points d’entrée d’interrogation Windows Forms avec STAThreadMark Windows Forms entry points with STAThread
CA2235CA2235 Marquez tous les champs non sérialisablesMark all non-serializable fields
CA2236CA2236 Appeler des méthodes de classe de base sur les types ISerializableCall base class methods on ISerializable types
CA2237CA2237 Marquer les types ISerializable avec SerializableAttributeMark ISerializable types with SerializableAttribute
CA2238CA2238 Implémentez les méthodes de sérialisationImplement serialization methods correctly
CA2240CA2240 Implémentez ISerializable correctementImplement ISerializable correctly
CA2241CA2241 Fournissez des arguments corrects aux méthodes de mise en formeProvide correct arguments to formatting methods
CA2242CA2242 Correctement des tests NaNTest for NaN correctly
CA1000CA1000 Ne pas déclarer de membres statiques sur les types génériquesDo not declare static members on generic types
CA1002CA1002 N’exposez pas de listes génériquesDo not expose generic lists
CA1003CA1003 Utiliser les instances du Gestionnaire d’événements génériquesUse generic event handler instances
CA1004CA1004 Les méthodes génériques doivent fournir un paramètre de typeGeneric methods should provide type parameter
CA1005CA1005 Éviter les paramètres excessifs sur les types génériquesAvoid excessive parameters on generic types
CA1006CA1006 Ne pas imbriquer les types génériques dans les signatures de membreDo not nest generic types in member signatures
CA1007CA1007 Utiliser des classes génériques lorsque cela est appropriéUse generics where appropriate
CA1008CA1008 Les enums doivent avoir la valeur zéroEnums should have zero value
CA1010CA1010 Les collections doivent implémenter une interface génériqueCollections should implement generic interface
CA1011CA1011 Si possible, transmettez les types de base en tant que paramètresConsider passing base types as parameters
CA1012CA1012 Les types abstraits ne doivent pas avoir de constructeursAbstract types should not have constructors
CA1013CA1013 Surchargez l’opérateur égal lors de la surcharge addition et de soustractionOverload operator equals on overloading add and subtract
CA1014CA1014 Marquer les assemblys avec CLSCompliantAttributeMark assemblies with CLSCompliantAttribute
CA1017CA1017 Marquer les assemblys avec ComVisibleAttributeMark assemblies with ComVisibleAttribute
CA1018CA1018 Marquer les attributs avec AttributeUsageAttributeMark attributes with AttributeUsageAttribute
CA1019CA1019 Définir des accesseurs pour les arguments d’attributDefine accessors for attribute arguments
CA1023CA1023 Les indexeurs ne doivent pas être multidimensionnelsIndexers should not be multidimensional
CA1024CA1024 Utilisez les propriétés lorsque cela est appropriéUse properties where appropriate
CA1025CA1025 Remplacer les arguments répétitifs par un tableau paramsReplace repetitive arguments with params array
CA1026CA1026 Les paramètres par défaut ne doivent pas être utilisésDefault parameters should not be used
CA1027CA1027 Marquer les enums avec FlagsAttributeMark enums with FlagsAttribute
CA1028CA1028 Enum storage doit être Int32Enum storage should be Int32
CA1030CA1030 Utiliser des événements lorsque cela est appropriéUse events where appropriate
CA1031CA1031 Ne pas intercepter des types d’exception généraleDo not catch general exception types
CA1032CA1032 Implémenter des constructeurs d’exception standardImplement standard exception constructors
CA1034CA1034 Types imbriqués ne doivent pas être visiblesNested types should not be visible
CA1035CA1035 Les implémentations ICollection ont des membres fortement typésICollection implementations have strongly typed members
CA1036CA1036 Substituer les méthodes sur les types comparableOverride methods on comparable types
CA1038CA1038 Les énumérateurs doivent être fortement typés.Enumerators should be strongly typed
CA1039CA1039 Les listes sont fortement typées.Lists are strongly typed
CA1041CA1041 Fournir un message ObsoleteAttributeProvide ObsoleteAttribute message
CA1043CA1043 Utilisez l’argument de chaîne ou intégral pour les indexeursUse integral or string argument for indexers
CA1044CA1044 Propriétés ne doivent pas être écriture seuleProperties should not be write only
CA1046CA1046 Ne pas surcharger l’opérateur égal à sur les types référenceDo not overload operator equals on reference types
CA1047CA1047 Ne pas déclarer les membres protégés dans les types sealedDo not declare protected members in sealed types
CA1048CA1048 Ne pas déclarer les membres virtuels dans les types sealedDo not declare virtual members in sealed types
CA1050CA1050 Déclarez les types dans les espaces de nomsDeclare types in namespaces
CA1051CA1051 Ne pas déclarer de champs d’instances visiblesDo not declare visible instance fields
CA1052CA1052 Types de conteneurs statiques doivent être sealedStatic holder types should be sealed
CA1053CA1053 Types de conteneurs statiques ne doivent pas avoir de constructeursStatic holder types should not have constructors
CA1054CA1054 Paramètres URI ne doivent pas être des chaînesURI parameters should not be strings
CA1055CA1055 Valeurs ne doivent pas être des chaînes de retour URIURI return values should not be strings
CA1056CA1056 Propriétés URI ne doivent pas être des chaînesURI properties should not be strings
CA1057CA1057 Surcharges d’URI de chaîne appellent les surcharges de System.UriString URI overloads call System.Uri overloads
CA1058CA1058 Les types ne doivent pas étendre certains types de baseTypes should not extend certain base types
CA1059CA1059 Les membres ne doivent pas exposer certains types concretsMembers should not expose certain concrete types
CA1064CA1064 Exceptions doivent être publiquesExceptions should be public
CA1500CA1500 Les noms de variables ne doivent pas correspondre aux noms de champsVariable names should not match field names
CA1502CA1502 Éviter l’excès de complexitéAvoid excessive complexity
CA1708CA1708 Les identificateurs doivent pas différer uniquement par leur casseIdentifiers should differ by more than case
CA1716CA1716 Les identificateurs ne doivent pas correspondre aux mots clésIdentifiers should not match keywords
CA1801CA1801 Passez en revue les paramètres inutilisésReview unused parameters
CA1804CA1804 Supprimez les variables locales inutiliséesRemove unused locals
CA1809CA1809 Évitez le surplus de variables localesAvoid excessive locals
CA1810CA1810 Initialiser les champs statiques de type référence en ligneInitialize reference type static fields inline
CA1811CA1811 Évitez le recours à du code privéAvoid uncalled private code
CA1812CA1812 Évitez les classes internes non instanciéesAvoid uninstantiated internal classes
CA1813CA1813 Évitez les attributs unsealedAvoid unsealed attributes
CA1814CA1814 Préférez des tableaux en escalier multidimensionnelsPrefer jagged arrays over multidimensional
CA1815CA1815 Remplacez equals et l’opérateur égal à sur les types valeurOverride equals and operator equals on value types
CA1819CA1819 Propriétés ne doivent pas retourner de tableauxProperties should not return arrays
CA1820CA1820 Vérifier la présence de chaînes vides à l’aide de la longueur de chaîneTest for empty strings using string length
CA1822CA1822 Marquez les membres comme staticMark members as static
CA1823CA1823 Évitez les champs privés inutilisésAvoid unused private fields
CA2201CA2201 Ne levez pas de types d’exceptions réservésDo not raise reserved exception types
CA2205CA2205 Utilisez des équivalents managés de l’API Win32Use managed equivalents of Win32 API
CA2208CA2208 Instanciez les exceptions d’argumentInstantiate argument exceptions correctly
CA2211CA2211 Les champs non constants ne doivent pas être visiblesNon-constant fields should not be visible
CA2217CA2217 Ne marquez pas les enums avec FlagsAttributeDo not mark enums with FlagsAttribute
CA2219CA2219 Ne pas lever d’exceptions dans les clauses d’exceptionDo not raise exceptions in exception clauses
CA2221CA2221 Les finaliseurs doivent être protégés.Finalizers should be protected
CA2222CA2222 Ne réduisez pas la visibilité des membres héritésDo not decrease inherited member visibility
CA2223CA2223 Les membres doivent différer par type de retourMembers should differ by more than return type
CA2224CA2224 Remplacez equals lors de la surcharge l’opérateur égalOverride equals on overloading operator equals
CA2225CA2225 Les surcharges d’opérateur ont nommées.Operator overloads have named alternates
CA2226CA2226 Les opérateurs doivent contenir des surcharges symétriquesOperators should have symmetrical overloads
CA2227CA2227 Propriétés de la collection doivent être en lecture seuleCollection properties should be read only
CA2230CA2230 Utilisez params pour les arguments de variablesUse params for variable arguments
CA2234CA2234 Passez des objets System.Uri à la place des chaînesPass System.Uri objects instead of strings
CA2239CA2239 Fournir des méthodes de désérialisation pour les champs facultatifsProvide deserialization methods for optional fields
CA1020CA1020 Éviter les espaces de noms comportant peu de typesAvoid namespaces with few types
CA1021CA1021 Éviter les paramètres outAvoid out parameters
CA1040CA1040 Éviter les interfaces videsAvoid empty interfaces
CA1045CA1045 Ne pas passer de types par référenceDo not pass types by reference
CA1062CA1062 Valider les arguments de méthodes publiquesValidate arguments of public methods
CA1501CA1501 Éviter l’excès d’héritageAvoid excessive inheritance
CA1504CA1504 Passez en revue les noms de champs trompeursReview misleading field names
CA1505CA1505 Éviter le codeAvoid unmaintainable code
CA1506CA1506 Éviter les couplages de classe excessifsAvoid excessive class coupling
CA1700CA1700 Ne nommez pas les valeurs enum 'Reserved'Do not name enum values 'Reserved'
CA1701CA1701 Mots composés de chaînes de ressources doivent être correcteResource string compound words should be cased correctly
CA1702CA1702 Mots composés doivent être correcteCompound words should be cased correctly
CA1703CA1703 Chaînes de ressources doivent être correcteResource strings should be spelled correctly
CA1704CA1704 Les identificateurs doivent être correctement orthographiésIdentifiers should be spelled correctly
CA1707CA1707 Identificateurs ne doivent pas contenir des traits de soulignementIdentifiers should not contain underscores
CA1709CA1709 Identificateurs doivent être correcteIdentifiers should be cased correctly
CA1710CA1710 Les identificateurs doivent porter un suffixe correctIdentifiers should have correct suffix
CA1711CA1711 Identificateurs ne doivent pas porter un suffixe incorrectIdentifiers should not have incorrect suffix
CA1712CA1712 N’ajoutez pas de préfixe avec le nom de type, les valeurs enumDo not prefix enum values with type name
CA1713CA1713 Les événements ne doivent pas avoir préfixe before ou afterEvents should not have before or after prefix
CA1714CA1714 Les énumérations d’indicateurs doivent avoir des noms au plurielFlags enums should have plural names
CA1715CA1715 Les identificateurs doivent porter un préfixe correctIdentifiers should have correct prefix
CA1717CA1717 Uniquement des enums FlagsAttribute doivent avoir des noms au plurielOnly FlagsAttribute enums should have plural names
CA1719CA1719 Les noms de paramètres ne doivent pas correspondre aux noms de membresParameter names should not match member names
CA1720CA1720 Identificateurs ne doivent pas contenir les noms de typeIdentifiers should not contain type names
CA1721CA1721 Les noms de propriétés ne doivent pas correspondre à des méthodes getProperty names should not match get methods
CA1722CA1722 Identificateurs ne doivent pas porter un préfixe incorrectIdentifiers should not have incorrect prefix
CA1724CA1724 Noms de types ne doivent pas correspondre aux espaces de nomsType Names Should Not Match Namespaces
CA1725CA1725 Les noms de paramètres doivent correspondre à la déclaration de baseParameter names should match base declaration
CA1726CA1726 Utilisez les termes par défautUse preferred terms
CA2204CA2204 Les littéraux doivent être correctement orthographiésLiterals should be spelled correctly