Partager via


Ensemble de règles des règles recommandées managées pour le code managé

Vous pouvez utiliser l'ensemble de Règles Microsoft Managées Recommandées pour vous concentrer sur les problèmes les plus critiques dans votre code managé, notamment les failles de sécurité potentielles, les arrêts brutaux d'application, et d'autres erreurs importantes de logique et de conception.Vous devez inclure cet ensemble de règles dans tout ensemble de règles personnalisées que vous créez pour vos projets.

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 transparentes peuvent ne 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 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