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

L’ensemble de règles relatif aux recommandations de conception étendues de Microsoft développe les recommandations de conception de base pour optimiser la résolution des problèmes de facilité d’utilisation et de maintenabilité. Une attention particulière est accordée aux recommandations de nommage. Vous devez inclure cet ensemble de règles si votre projet comprend du code de bibliothèque, ou si vous souhaitez appliquer les standards les plus élevés pour l’écriture d’un code facile à gérer.

Les recommandations de conception étendues incluent l’ensemble de règles relatif aux recommandations de conception de base, qui comprend à son tour l’ensemble de règles relatif aux recommandations pour l’écriture de code managé.

Le tableau suivant décrit toutes les règles de l’ensemble de règles relatif aux recommandations de conception étendues de 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 assemblys 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/Invoke 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 les emplacements inattendus
CA1301 Éviter les accélérateurs en double
CA1400 Des points d'entrée P/Invoke doivent exister
CA1401 Les P/Invoke ne doivent pas être visibles
CA1403 Les types Structurer automatiquement ne doivent pas être visibles par COM
CA1404 Appeler GetLastError immédiatement après P/Invoke
CA1405 Les types de base type visibles par COM doivent être visibles par COM
CA1410 Les méthodes d'inscription COM doivent être mises en correspondance
CA1415 Déclarer correctement les méthodes P/Invoke
CA1821 Supprimez les finaliseurs vides
CA1900 Les champs de type valeur doivent être portables
CA1901 Les déclarations P/Invoke doivent être portables
CA2002 Ne définissez pas un verrou sur des objets à identité faible
CA2100 Vérifier si les requêtes SQL présentent des failles de sécurité
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 doivent pas être visibles
CA2112 Les types sécurisés ne doivent 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 substitution 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 type exigent des demandes d'héritage
CA2131 Les types critiques de sécurité ne peuvent 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 La transparence des méthodes doit rester cohérente lors de la substitution de 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 transparentes ne peuvent pas utiliser d’assertions de sécurité
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 d'objets plusieurs fois
CA2207 Initialisez les champs statiques des types valeur en 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 doivent déclarer un finaliseur
CA2220 Les finaliseurs doivent appeler le finaliseur de leur classe de base
CA2229 Implémentez des constructeurs de sérialisation
CA2231 Surchargez l’opérateur égal (equals) en remplaçant ValueType.Equals
CA2232 Marquez les points d'entrée Windows Forms avec STAThread
CA2235 Marquez tous les champs non sérialisés
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 comme il se doit
CA2240 Implémentez ISerializable comme il se doit
CA2241 Indiquer le nombre correct d'arguments dans les 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 Utiliser les 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 abstract 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 assemblys avec CLSCompliantAttribute
CA1017 Marquer les assemblys 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 params
CA1026 Les paramètres par défaut ne doivent pas être utilisés
CA1027 Marquer les enums avec FlagsAttribute
CA1028 Enum Storage 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 ICollection possèdent des membres fortement typés
CA1036 Substituer les méthodes sur les types Comparable
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 les 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 uniquement 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 Remplacez Equals et l'opérateur égal à dans les types valeur
CA1819 Les propriétés ne doivent pas retourner des tableaux
CA1820 Vérifiez la présence de chaînes vides par 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 marquez pas les enums avec l'attribut 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 la chaîne 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 L'orthographe des identificateurs doit être correcte
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 noms des enums Flags doivent être 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 des paramètres doivent correspondre à la déclaration de base
CA1726 Utilisez les termes par défaut
CA2204 Les littéraux doivent être orthographiés correctement