Ensemble de règles de règles de vérification étendue pour le code managéExtended Correctness Rules rule set for managed code

L’ensemble de règles de règles de vérification étendue Microsoft optimise les erreurs d’utilisation logique et de l’infrastructure qui sont signalés par l’analyse du code.The Microsoft Extended Correctness Rules rule set maximizes the logic and framework usage errors that are reported by code analysis. L’accent sur les scénarios spécifiques tels que l’interopérabilité COM et des applications mobiles.Extra emphasis is placed on specific scenarios such as COM interoperability and mobile applications. Pensez à inclure cet ensemble de règles si un de ces scénarios s’applique à votre projet ou pour trouver d’autres problèmes dans votre projet.You should consider including this rule set if one of these scenarios applies to your project or to find additional problems in your project.

L’ensemble de règles de règles de vérification étendue Microsoft inclut les règles qui sont définies dans la règle de règles de vérification de base Microsoft.The Microsoft Extended Correctness Rules rule set includes the rules that are in the Microsoft Basic Correctness Rules rule set. Les règles de vérification de base inclut les règles qui sont définies dans la règle de règles minimales recommandées.The Basic Correctness Rules include the rules that are in the Microsoft Minimum Recommended Rules rule set. Pour plus d’informations, consultez les règles de vérification 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 Correctness 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 de règles de vérification étendue Microsoft.The following table describes all of the rules in the Microsoft Extended Correctness 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
CA1008CA1008 Les enums doivent avoir la valeur zéroEnums should have zero value
CA1013CA1013 Surchargez l’opérateur égal lors de la surcharge addition et de soustractionOverload operator equals on overloading add and subtract
CA1303CA1303 Ne pas transmettre des littéraux en tant que paramètres localisésDo not pass literals as localized parameters
CA1308CA1308 Normaliser les chaînes en majusculesNormalize strings to uppercase
CA1806CA1806 N’ignorez pas les résultats de la méthodeDo not ignore method results
CA1816CA1816 Appelez GC. SuppressFinalize correctementCall GC.SuppressFinalize correctly
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
CA1903CA1903 Utiliser uniquement l’API du framework cibleUse only API from targeted framework
CA2004CA2004 Supprimez les appels à GC. KeepAliveRemove calls to GC.KeepAlive
CA2006CA2006 Utilisez SafeHandle pour encapsuler les ressources nativesUse SafeHandle to encapsulate native resources
CA2102CA2102 Interceptez les exceptions non CLSCompliant dans les gestionnaires générauxCatch non-CLSCompliant exceptions in general handlers
CA2104CA2104 Ne déclarez pas les types référence mutables uniquement en lectureDo not declare read only mutable reference types
CA2105CA2105 Les champs de tableau ne doivent pas être lu uniquementArray fields should not be read only
CA2106CA2106 Assertions sécuriséesSecure asserts
CA2115CA2115 Appelez GC. KeepAlive lors de l’utilisation des ressources nativesCall GC.KeepAlive when using native resources
CA2119CA2119 Scellez les méthodes qui satisfont les interfaces privéesSeal methods that satisfy private interfaces
CA2120CA2120 Sécuriser les constructeurs de sérialisationSecure serialization constructors
CA2121CA2121 Les constructeurs statiques doivent être privésStatic constructors should be private
CA2130CA2130 Les constantes critiques de sécurité doivent être transparentesSecurity critical constants should be transparent
CA2205CA2205 Utilisez des équivalents managés de l’API Win32Use managed equivalents of Win32 API
CA2215CA2215 Les méthodes Dispose doivent appeler dispose de la classe de baseDispose methods should call base class dispose
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
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
CA2239CA2239 Fournir des méthodes de désérialisation pour les champs facultatifsProvide deserialization methods for optional fields
CA1032CA1032 Implémenter des constructeurs d’exception standardImplement standard exception 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
CA1402CA1402 Éviter les surcharges dans les interfaces COM visiblesAvoid overloads in COM visible interfaces
CA1406CA1406 Éviter les arguments Int64 pour les clients Visual Basic 6Avoid Int64 arguments for Visual Basic 6 clients
CA1407CA1407 Éviter les membres statiques dans les types visibles par COMAvoid static members in COM visible types
CA1408CA1408 Ne pas utiliser AutoDual ClassInterfaceTypeDo not use AutoDual ClassInterfaceType
CA1409CA1409 Types visibles par COM doivent pouvoir être créésCom visible types should be creatable
CA1411CA1411 Méthodes d’inscription COM ne doivent pas être visiblesCOM registration methods should not be visible
CA1412CA1412 Marquer les Interfaces ComSource comme IDispatchMark ComSource Interfaces as IDispatch
CA1413CA1413 Évitez les champs non publics dans les types valeur visibles par COMAvoid non-public fields in COM visible value types
CA1414CA1414 Marquer les arguments P/Invoke booléens comme MarshalAsMark boolean P/Invoke arguments with MarshalAs
CA1600CA1600 N’utilisez pas la priorité de processus inactifDo not use idle process priority
CA1601CA1601 N’utilisez pas de minuteries qui empêchent les changements d’état d’alimentationDo not use timers that prevent power state changes
CA1824CA1824 Marquer les assemblys avec NeutralResourcesLanguageAttributeMark assemblies with NeutralResourcesLanguageAttribute
CA2001CA2001 Évitez d’appeler des méthodesAvoid calling problematic methods
CA2003CA2003 Ne traitez pas les fibres comme des threadsDo not treat fibers as threads
CA2135CA2135 Les assemblys de niveau 2 ne doivent pas contenir de LinkDemandsLevel 2 assemblies should not contain LinkDemands
CA2136CA2136 Les membres ne devez pas d’annotations de transparence conflictuellesMembers should not have conflicting transparency annotations
CA2139CA2139 Les méthodes transparentes ne peuvent pas utiliser l’attribut HandleProcessCorruptingExceptionsTransparent methods may not use the HandleProcessCorruptingExceptions attribute
CA2142CA2142 Le code transparent ne doit pas être protégé avec des LinkDemandsTransparent code should not be protected with LinkDemands
CA2143CA2143 Les méthodes transparentes ne doivent pas utiliser de demandes de sécuritéTransparent methods should not use security demands
CA2144CA2144 Le code transparent ne doit pas charger les assemblys depuis des tableaux d’octetsTransparent code should not load assemblies from byte arrays
CA2145CA2145 Les méthodes transparentes ne doivent pas être décorées avec SuppressUnmanagedCodeSecurityAttributeTransparent methods should not be decorated with the SuppressUnmanagedCodeSecurityAttribute
CA2204CA2204 Les littéraux doivent être correctement orthographiésLiterals should be spelled 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
CA2218CA2218 Remplacez GetHashCode au moment de remplacer EqualsOverride GetHashCode on overriding Equals
CA2219CA2219 Ne pas lever d’exceptions dans les clauses d’exceptionDo not raise exceptions in exception clauses
CA2225CA2225 Les surcharges d’opérateur ont nommées.Operator overloads have named alternates
CA2228CA2228 Ne sont pas fournis à des formats de ressources non commercialisésDo not ship unreleased resource formats
CA2230CA2230 Utilisez params pour les arguments de variablesUse params for variable arguments
CA2233CA2233 Les opérations ne doivent pas déborderOperations should not overflow
CA2234CA2234 Passez des objets System.Uri à la place des chaînesPass System.Uri objects instead of strings
CA2243CA2243 Littéraux de chaîne d’attribut doivent être analysés correctementAttribute string literals should parse correctly