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 |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour