Partager via


Ensemble de règles des règles recommandées mixtes

Les règles recommandées mixtes de Microsoft se concentrent sur les problèmes les plus courants et critiques dans vos projets C++ qui prennent en charge le Common Language Runtime, notamment les failles de sécurité potentielles, les incidents d’application et d’autres erreurs de logique et de conception importantes. Cet ensemble de règles inclut toutes les règles de l’ensemble Règles minimales mixtes.

Incluez cet ensemble de règles dans n’importe quel ensemble de règles personnalisé que vous créez pour vos projets C++ qui prennent en charge le Common Language Runtime.

Règle Description
C6001 Utilisation d'une mémoire non initialisée
C6011 Déréférencement du pointeur Null
C6029 Utilisation d'une valeur non vérifiée
C6031 Valeur renvoyée ignorée
C6053 Terminaison par zéro de l'appel
C6054 Terminaison par zéro manquante
C6059 Concaténation non valide
C6063 Argument de chaîne manquant pour le formatage de la fonction
C6064 Argument d’entier manquant pour le formatage de la fonction
C6066 Argument de pointeur manquant pour le formatage de la fonction
C6067 Argument de pointeur de chaîne manquant pour le formatage de la fonction
C6101 Retour d'une mémoire non initialisée
C6200 L'index dépasse la taille maximale autorisée par la mémoire tampon
C6201 L'index dépasse la taille maximale autorisée par la mémoire tampon allouée par la pile
C6214 Cast HRESULT To BOOL non valide
C6215 Cast BOOL To HRESULT non valide
C6216 Cast inséré par compilateur BOOL To HRESULT non valide
C6217 Test HRESULT non valide avec NOT
C6220 Comparaison de HRESULT non valide à -1
C6226 Affectation de HRESULT non valide à -1
C6230 Utilisation de HRESULT non valide en tant que booléen
C6235 Constante non nulle avec Logical-Or
C6236 Logical-Or avec une constante non nulle
C6237 Zéro avec Logical-And perd les effets secondaires
C6242 Déroulement local forcé
C6248 Création d’un DACL nul
C6250 Descripteurs d’adresses non mis en lecture
C6255 Utilisation non protégée d’alloca
C6258 Utilisation de l’interruption du thread
C6259 Code mort dans le commutateur limité Bitwise-Or
C6260 Utilisation de l’arithmétique d’octets
C6262 Utilisation excessive de l’empilement
C6263 Utilisation d’alloca dans une boucle
C6268 Parenthèses manquantes dans le cast
C6269 Déréférencement du pointeur ignoré
C6270 Argument float manquant pour le formatage de la fonction
C6271 Argument supplémentaire pour le formatage de la fonction
C6272 Argument non float pour le formatage de la fonction
C6273 Argument non entier pour la fonction Format
C6274 Argument autre qu’un caractère pour le formatage de la fonction
C6276 Cast de chaîne non valide
C6277 Appel CreateProcess non valide
C6278 Incompatibilité Array-New Scalar-Delete
C6279 Incompatibilité Scalar-New Array-Delete
C6280 Incompatibilité de la mémoire Allocation-Deallocation
C6281 Priorité de relation au niveau du bit
C6282 Remplacement de l’affectation par le test
C6283 Incompatibilité primitive Array-New Scalar-Delete
C6284 Argument d’objet non valide pour le formatage de la fonction
C6285 Logical-Or de constantes
C6286 Non nul Logical-Or perd les effets secondaires
C6287 Test redondant
C6288 Inclusion mutuelle sur Logical-And est False
C6289 Exclusion mutuelle sur Logical-Or est True
C6290 Priorité NOT logique et AND au niveau du bit
C6291 Priorité NOT logique et OR au niveau du bit
C6292 Nombre de boucles vers le haut à partir du maximum
C6293 Nombres de boucles vers le bas à partir du minimum
C6294 Corps de boucles jamais exécuté
C6295 Boucle infinie
C6296 Boucle exécutée une seule fois
C6297 Résultat du cast de décalage vers une plus grande taille
C6299 Comparaison de champ de bits et booléen
C6302 Argument de chaîne de caractères non valide pour le formatage de la fonction
C6303 Argument de chaîne de caractères larges non valide pour le formatage de la fonction
C6305 Incompatibilité entre la taille et la quantité
C6306 Appel de fonction d’argument de variable non valide
C6308 Fuite realloc
C6310 Constante de filtre d’exception non valide
C6312 Boucle d’exécution continue d’exception
C6314 Priorité sur Bitwise-Or
C6317 Non complémentaire
C6318 Recherche continue d’exception
C6319 Ignoré par une virgule
C6324 Copie de chaîne au lieu de comparaison de chaînes
C6328 Incompatibilité de type d’argument possible
C6331 Indicateurs non valides VirtualFree
C6332 Paramètre non valide VirtualFree
C6333 Taille non valide VirtualFree
C6335 Descripteur de processus de fuite
C6381 Informations d’arrêt manquantes
C6383 Dépassement de mémoire tampon Element-Count Byte-Count
C6384 Division de taille du pointeur
C6385 Dépassement en lecture
C6386 Dépassement en écriture
C6387 Valeur de paramètre non valide
C6388 Valeur de paramètre non valide
C6500 Propriété d'attribut non valide
C6501 Valeurs de propriété d'attribut en conflit
C6503 Les références ne peuvent pas être Null
C6504 Null sur élément non pointeur
C6505 MustCheck sur Void
C6506 Taille de mémoire tampon sur élément non pointeur ou tableau
C6508 Accès en écriture sur constante
C6509 Retour utilisé sur condition préalable
C6510 Terminaison par Null sur élément non pointeur
C6511 MustCheck doit avoir la valeur Yes ou No
C6513 Taille d'élément sans taille de mémoire tampon
C6514 Taille de mémoire tampon dépasse la taille du tableau
C6515 Taille de la mémoire tampon sur élément non pointeur
C6516 Attribut sans propriété
C6517 Taille valide dans mémoire tampon non lisible
C6518 Taille accessible en écriture dans mémoire tampon non accessible en écriture
C6522 Type de chaîne de taille non valide
C6525 Chaîne de taille non valide. Emplacement inaccessible
C6527 Annotation non valide : la propriété NeedsRelease ne doit pas être utilisée sur des valeurs de type void
C6530 Style de chaîne de format non reconnu
C6540 L'utilisation des annotations d'attribut sur cette fonction rendra non valides toutes ses annotations __declspec existantes
C6551 Spécification de taille non valide : expression impossible à analyser
C6552 Deref= ou Noref= non valide : expression impossible à analyser
C6701 La valeur n'est pas une valeur Yes/No/Maybe valide
C6702 La valeur n'est pas une valeur de chaîne
C6703 La valeur n'est pas un nombre
C6704 Erreur d'expression de l'annotation inattendue
C6705 Le nombre d’arguments attendu pour l’annotation ne correspond pas au nombre réel d’arguments pour l’annotation
C6706 Erreur d'annotation inattendue pour l'annotation
C6995 Échec de l’enregistrement du fichier journal XML
C26100 Condition de concurrence
C26101 Échec de l’utilisation appropriée de l’opération de verrouillage
C26110 Échec de l’appelant à maintenir le verrou
C26111 Échec de l’appelant à libérer le verrou
C26112 Échec de l’appelant à conserver le verrou
C26115 Échec de la libération du verrou
C26116 Échec de l’acquisition ou de la conservation du verrou
C26117 Libération du verrou non retenu
C26140 Erreur d’annotation SAL concurrentiel
C28020 L’expression n’a pas la valeur True dans cet appel
C28021 Le paramètre annoté doit être un pointeur
C28022 Les classes de fonctions sur cette fonction ne correspondent pas aux classes de fonctions sur le typedef utilisé pour les définir.
C28023 La fonction affectée ou transmise doit avoir une annotation _Function_class_ pour au moins l’une des classes
C28024 Le pointeur de la fonction attribuée est annoté avec la classe de fonction, laquelle n’est pas contenue dans la liste des classes de fonctions.
C28039 Le type du paramètre réel doit correspondre exactement au type
C28112 Une variable accessible via une fonction verrouillée doit toujours être accessible via une fonction verrouillée.
C28113 Accès à une variable locale via une fonction verrouillée
C28125 La fonction doit être appelée depuis un bloc try/except
C28137 L’argument de la variable devrait plutôt être une constante (littéral)
C28138 L’argument de la constante devrait plutôt être une variable
C28159 Envisagez plutôt d’utiliser une autre fonction.
C28160 annotation d'erreur
C28163 La fonction ne doit jamais être appelée depuis un bloc try/except
C28164 L’argument est passé à une fonction qui attend un pointeur vers un objet (pas un pointeur vers un pointeur)
C28182 Déréférencement du pointeur NULL. Le pointeur contient la même valeur NULL qu'un autre pointeur.
C28183 L’argument peut être une valeur et est une copie de la valeur trouvée dans le pointeur
C28193 La variable contient une valeur qui doit être examinée
C28196 L’exigence n’est pas satisfaite. (L’expression ne prend pas la valeur True.)
C28202 Référence non autorisée à un membre non statique
C28203 Référence ambiguë à un membre de classe.
C28205 _Success_ ou _On_failure_ utilisé dans un contexte non autorisé
C28206 L’opérande de gauche pointe vers un struct, utiliser « -> »
C28207 L’opérande de gauche est un struct, utiliser '.'
C28209 La déclaration pour le symbole possède une déclaration en conflit
C28210 Les annotations pour le contexte __on_failure ne doivent pas se trouver dans un contexte préalable explicite
C28211 Nom du contexte statique attendu pour SAL_context
C28212 Expression de pointeur attendue pour l'annotation
C28213 L'annotation _Use_decl_annotations_ doit être utilisée pour référencer, sans modification, une déclaration antérieure.
C28214 Les noms des paramètres d'attribut doivent être p1...p9
C28215 Le typefix ne peut pas être appliqué à un paramètre qui contient déjà un typefix
C28216 L'annotation checkReturn ne s'applique qu'aux post-conditions pour le paramètre de fonction spécifique.
C28217 Pour la fonction, le nombre de paramètres de l'annotation ne correspond pas au nombre trouvé dans le fichier
C28218 Pour le paramètre de fonction, le paramètre de l’annotation ne correspond pas au paramètre trouvé dans le fichier
C28219 Membre de l'énumération attendu pour une annotation, le paramètre dans l'annotation
C28220 Expression d'entier attendue pour une annotation, le paramètre dans l'annotation
C28221 Expression de chaîne attendue pour le paramètre dans l'annotation
C28222 __yes, __no ou __maybe attendus pour l'annotation
C28223 Jeton/identificateur introuvable pour l'annotation, paramètre
C28224 L'annotation requiert des paramètres
C28225 Nombre correct de paramètres requis introuvable dans l'annotation
C28226 L'annotation ne peut pas être également un PrimOp (dans la déclaration actuelle)
C28227 L'annotation ne peut pas être également un PrimOp (voir la déclaration antérieure)
C28228 Paramètre d'annotation : impossible d'utiliser ce type dans les annotations
C28229 L'annotation ne prend pas en charge les paramètres
C28230 Le type de paramètre ne contient pas de membre.
C28231 L'annotation n'est valide que sur un tableau
C28232 pre, post, ou deref ne sont appliqués à aucune annotation
C28233 pre, post ou deref sont appliqués à un bloc
C28234 l'expression __at ne s'applique pas à la fonction actuelle
C28235 La fonction ne peut pas constituer à elle seule une annotation
C28236 L'annotation ne peut pas être utilisée dans une expression
C28237 L'annotation sur le paramètre n'est plus prise en charge
C28238 Plusieurs value, stringValue et longValue sont définies dans l'annotation sur le paramètre. Utiliser paramn=xxx
C28239 value, stringValue ou longValue, et paramn=xxx sont définis en même temps dans l'annotation sur le paramètre. Utiliser uniquement paramn=xxx
C28240 L'annotation sur le paramètre possède un param2, mais pas de param1
C28241 L'annotation pour la fonction sur le paramètre n'est pas reconnue
C28243 L’annotation pour la fonction sur le paramètre nécessite plus de déréférencements que le type réel annoté ne le permet.
C28244 L’annotation pour la fonction possède un paramètre non analysable/une annotation externe
C28245 L’annotation pour la fonction annote ’this’ sur une fonction non membre
C28246 L'annotation du paramètre ne correspond pas au type du paramètre
C28250 Annotation incohérente pour une fonction : l'instance précédente contient une erreur.
C28251 Annotation incohérente pour une fonction : cette instance contient une erreur.
C28252 Annotation incohérente pour une fonction : le paramètre contient d'autres annotations sur cette instance.
C28253 Annotation incohérente pour une fonction : le paramètre contient d'autres annotations sur cette instance.
C28254 dynamic_cast<>() n’est pas pris en charge dans les annotations
C28262 Une erreur de syntaxe dans l'annotation a été trouvée dans la fonction, pour l'annotation
C28263 Une erreur de syntaxe dans une annotation conditionnelle a été trouvée pour l'annotation intrinsèque
C28267 Une erreur de syntaxe dans les annotations a été trouvée pour l'annotation dans la fonction.
C28272 L'annotation pour la fonction, paramètre pendant la vérification est incohérente avec la déclaration de fonction
C28273 Pour la fonction, les indices sont incohérents avec la déclaration de fonction
C28275 Le paramètre de _Macro_value_ a la valeur null
C28279 Pour le symbole, un 'begin' a été trouvé sans le 'end' correspondant
C28280 Pour le symbole, un 'end' a été trouvé sans le 'begin' correspondant
C28282 Les chaînes de format doivent être comprises dans des conditions préalables
C28285 Pour la fonction, erreur de syntaxe dans le paramètre
C28286 Pour la fonction, erreur de syntaxe près de la fin
C28287 Pour la fonction, erreur de syntaxe dans l'annotation _At_() (nom de paramètre non reconnu)
C28288 Pour la fonction, erreur de syntaxe dans l'annotation _At_() (nom de paramètre non valide)
C28289 Pour la fonction : ReadableTo ou WritableTo n'a pas eu de spécification de limites en tant que paramètre
C28290 l'annotation pour la fonction contient plus d'Externals que le nombre réel de paramètres
C28291 post null/notnull au niveau 0 deref n'a pas de sens pour la fonction.
C28300 Opérandes d’expression de types incompatibles pour l’opérateur
C28301 Aucune annotation pour la première déclaration de la fonction.
C28302 Un opérateur extra _Deref_ a été trouvé dans une annotation.
C28303 Un opérateur _Deref_ ambigu a été trouvé dans une annotation.
C28304 Un opérateur _Notref_ placé de manière incorrecte et appliqué à un jeton a été trouvé.
C28305 Une erreur a été détectée pendant l'analyse d'un jeton.
C28306 L’annotation sur le paramètre est obsolète
C28307 L’annotation sur le paramètre est obsolète
C28350 L'annotation décrit une situation qui n'est pas applicable de manière conditionnelle.
C28351 L'annotation décrit l'emplacement auquel une valeur dynamique (une variable) ne peut pas être utilisée dans la condition.
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