Partager via


Ensemble de règles d'analyse du code Règles de vérification étendue Microsoft

L'ensemble des Règles de vérification étendue Microsoft augmente le nombre d'erreurs d'utilisation d'infrastructure et de logique signalées via l'analyse du code. L'accentuation supplémentaire est placée sur les scénarios spécifiques tels que l'interopérabilité COM et les applications mobiles. Vous devriez envisager d'ajouter cet ensemble de règles si l'un de ces scénarios s'applique à votre projet ou pour trouver d'autres problèmes dans votre projet.

L'ensemble des Règles de vérification étendue Microsoft inclut les règles qui figurent dans les Règles de vérification de base Microsoft. L'ensemble des Règles de vérification de base Microsoft inclut les règles qui figurent dans les Règles Microsoft minimales recommandées. Pour plus d'informations, consultez Ensemble de règles d'analyse du code Règles de vérification de base Microsoft et Ensemble de règles d'analyse du code Règles Microsoft minimales recommandées.

Le tableau suivant décrit toutes les règles qui figurent dans l'ensemble des Règles de vérification étendue Microsoft.

Règle

Description

CA1032 : Implémenter des constructeurs d'exception standard

Ne pas fournir le jeu complet de constructeurs peut rendre difficile une gestion des exceptions correcte.

CA1054 : Les paramètres Uri ne doivent pas être des chaînes

Si une méthode accepte une représentation sous forme de chaîne d'un URI, une surcharge correspondante qui accepte une instance de la classe URI doit être fournie ; elle-même fournit ces services de manière sûre et sécurisée.

CA1055 : Les valeurs de retour Uri ne doivent pas être des chaînes

Cette règle considère que la méthode retourne un URI (Uniform Resource Identifier). Une représentation sous forme de chaîne d'un URI est sujette aux erreurs d'analyse et d'encodage, et peut entraîner des failles de sécurité. La classe System.Uri fournit ces services de manière sûre et sécurisée.

CA1056 : Les propriétés Uri ne doivent pas être des chaînes

Cette règle considère que la propriété représente un URI (Uniform Resource Identifier). Une représentation sous forme de chaîne d'un URI est sujette aux erreurs d'analyse et d'encodage, et peut entraîner des failles de sécurité. La classe System.Uri fournit ces services de manière sûre et sécurisée.

CA1057 : Les surcharges d'uri de chaîne appellent les surcharges de System.Uri

Un type déclare des surcharges de méthode qui diffèrent uniquement par le remplacement d'un paramètre de chaîne par un paramètre System.Uri. La surcharge qui accepte le paramètre de chaîne n'appelle pas la surcharge qui accepte le paramètre URI.

CA1402 : Éviter les surcharges dans les interfaces COM visibles

Lorsque les méthodes surchargées sont exposées aux clients COM, seule la première surcharge de méthode conserve son nom. Les surcharges suivantes sont renommées de manière unique par l'ajout d'un trait de soulignement (_) au nom et d'un entier qui correspond à l'ordre de déclaration de la surcharge.

CA1406 : Éviter les arguments Int64 pour les clients Visual Basic 6

Les clients COM Visual Basic 6 ne peuvent pas accéder aux entiers de 64 bits.

CA1407 : Éviter les membres statiques dans les types visibles par COM

COM ne prend pas en charge les méthodes statiques.

CA1408 : Ne pas utiliser le paramètre AutoDual ClassInterfaceType

Les types qui utilisent une interface double permettent aux clients de se lier à une disposition d'interface spécifique. Les modifications apportées à une version future de la disposition du type ou des types de base bloquent les clients COM qui se lient à l'interface. Par défaut, si l'attribut ClassInterfaceAttribute n'est pas spécifié, une interface de répartition uniquement est utilisée.

CA1409 : Les types visibles par COM doivent pouvoir être créés

Un type référence marqué spécifiquement comme visible par des clients COM contient un constructeur public paramétré, mais ne contient pas de constructeur public par défaut (sans paramètre). Les clients COM ne peuvent pas créer de type sans constructeur public par défaut.

CA1411 : Les méthodes d'inscription COM ne doivent pas être visibles

Une méthode marquée avec l'attribut System.Runtime.InteropServices.ComRegisterFunctionAttribute ou System.Runtime.InteropServices.ComUnregisterFunctionAttribute est visible de l'extérieur.

CA1412 : Marquer les interfaces ComSource comme IDispatch

Un type est marqué avec l'attribut System.Runtime.InteropServices.ComSourceInterfacesAttribute et au moins une des interfaces spécifiées n'est pas marquée avec l'attribut System.Runtime.InteropServices.InterfaceTypeAttribute ayant la valeur ComInterfaceType.InterfaceIsIDispatch.

CA1413 : Éviter les champs non publics dans les types valeur visibles par COM

Les champs d'instance non publics des types valeur visibles par COM sont visibles par les clients COM. Passez en revue le contenu des champs pour voir les informations qui ne doivent pas être exposées, sinon vous aurez une conception imprévue ou des conséquences sur la sécurité.

CA1414 : Marquer les arguments P/Invoke booléens comme MarshalAs

Le type de données booléen contient plusieurs représentations dans le code non managé.

CA1600 : Ne pas utiliser de priorité de processus inactif

N'affectez pas la valeur Idle à la priorité de processus. Sinon, les processus avec System.Diagnostics.ProcessPriorityClass.Idle occuperaient le processeur alors qu'il devrait être inactif et bloqueraient par conséquent la veille.

CA1601 : Ne pas utiliser de minuteries qui empêchent les changements d'état de l'alimentation

En effet, toute activité périodique supérieure à cette fréquence occupe le processeur et interfère avec les minuteries d'inactivité qui déclenchent la mise en veille de l'écran et des disques durs pour économiser de l'énergie.

CA1821 : Supprimer les finaliseurs vides

Évitez autant que possible d'utiliser des finaliseurs en raison de la surcharge supplémentaire des performances impliquée dans le suivi de la durée de vie de l'objet. Un finaliseur vide entraîne une charge supplémentaire sans aucun avantage.

CA1824 : Marquer les assemblys avec NeutralResourcesLanguageAttribute

L'attribut NeutralResourcesLanguage informe le ResourceManager de la langue qui a été utilisée pour afficher les ressources de la culture neutre d'un assembly. Cela permet d'améliorer les performances de recherche de la première ressource chargée et de réduire votre jeu de travail.

CA2001 : Évitez d'appeler des méthodes susceptibles de poser des problèmes

Un membre appelle une méthode potentiellement dangereuse ou problématique.

CA2003 : Ne traitez pas les fibres comme des threads

Un thread managé est traité comme un thread Win32.

CA2204 : Les littéraux doivent être correctement orthographiés

Une chaîne littéral dans un corps de méthode contient un ou plusieurs mots qui ne sont pas reconnus par la bibliothèque de vérificateur d'orthographe Microsoft.

CA2211 : Les champs non constants ne doivent pas être visibles

Les champs statiques qui ne sont ni constants ni en lecture seule ne sont pas thread-safe. L'accès à un tel champ doit être scrupuleusement contrôlé et requiert des techniques de programmation évoluées pour synchroniser l'accès à l'objet de classe.

CA2217 : Ne pas marquer les enums avec FlagsAttribute

Une énumération extérieurement visible est marquée par FlagsAttribute et possède une ou plusieurs valeurs qui ne sont pas des puissances de deux ou une combinaison des autres valeurs définies dans l'énumération.

CA2218 : Remplacez GetHashCode au moment de remplacer Equals

GetHashCode retourne une valeur fondée sur l'instance actuelle adaptée aux algorithmes de hachage et aux structures de données telles qu'une table de hachage. Deux objets de même type et égaux doivent retourner le même code de hachage.

CA2219 : Ne pas lever d'exceptions dans les clauses d'exception

Lorsqu'une exception est levée dans une clause finally ou fault, la nouvelle exception masque l'exception active. Lorsqu'une exception est levée dans une clause filter, le runtime l'intercepte en silence. Cela rend l'erreur d'origine difficile à détecter et à déboguer.

CA2225 : Les surcharges d'opérateur offrent d'autres méthodes nommées

Une surcharge d'opérateur a été détectée, et la méthode de substitution nommée attendue n'a pas été trouvée. Le membre de substitution nommé donne accès aux mêmes fonctionnalités que l'opérateur. Il est fourni aux développeurs qui programment dans les langages qui ne prennent pas en charge les opérateurs surchargés.

CA2228 : Ne distribuez pas des formats de ressources non commercialisés

Les fichiers de ressources construits au moyen de versions préliminaires du .NET Framework peuvent ne pas être utilisables par les versions prises en charge du .NET Framework.

CA2230 : Utilisez le mot clé params pour les arguments de variables

Un type public ou protégé contient une méthode publique ou protégée qui utilise la convention d'appel VarArgs au lieu du mot clé params.

CA2233 : Les opérations ne doivent pas déborder

Les opérations arithmétiques ne doivent pas être exécutées sans valider au préalable les opérandes afin de s'assurer que le résultat de l'opération ne se trouve pas hors de la plage des valeurs possibles pour les types de données impliqués.

CA2234 : Passez des objets System.Uri à la place de chaînes

Un appel est passé à une méthode qui a un paramètre de chaîne dont le nom contient « uri », « URI », « urn », « URN », « url » ou « URL ». Le type déclarant de la méthode contient une surcharge de méthode correspondante qui a un paramètre System.Uri.

CA2243 : Les littéraux de chaîne d'attribut doivent être correctement analysés

Le paramètre de littéral de chaîne d'un attribut n'effectue pas une analyse correcte pour une URL, un GUID ou une version.