Analyse de code pour les avertissements C/C++
Mise à jour : novembre 2007
Cette section répertorie les avertissements d'analyse du code C/C++ de la plage C6000 à C6999.
Dans cette section
Numéro d'avertissement |
Description |
---|---|
avertissement C6001 : utilisation de la mémoire non initialisée <variable> |
|
avertissement C6011 : suppression de la référence du pointeur NULL <nom> |
|
avertissement C6029 : dépassement de mémoire tampon possible lors de l'appel à <fonction> : utilisation de la valeur non vérifiée |
|
avertissement C6031 : valeur de retour ignorée : <fonction> peut retourner une valeur inattendue |
|
avertissement C6053 : l'appel à <fonction> peut ne pas terminer la chaîne <variable> par zéro |
|
avertissement C6054 : la chaîne <variable> peut ne pas se terminer par zéro |
|
avertissement C6057 : dépassement de mémoire tampon lié au nombre de caractères/nombre d'octets incompatible dans l'appel à <fonction> |
|
avertissement C6059 : Paramètre de longueur incorrect dans l'appel à <fonction>. Passez le nombre de caractères restants, pas la taille de mémoire tampon de < variable > |
|
avertissement C6063 : argument de chaîne manquant pour <fonction> correspondant au spécificateur de conversion <numéro> |
|
avertissement C6064 : argument entier manquant pour <fonction> correspondant au spécificateur de conversion <numéro> |
|
avertissement C6066 : élément non pointeur passé en tant que paramètre <numéro> lorsque le pointeur est requis dans l'appel à <fonction> |
|
avertissement C6067 : paramètre <numéro> dans l'appel à <fonction> doit être l'adresse de la chaîne |
|
avertissement C6200 : l'index <nom> est en dehors de la plage d'index valide <min> à <max> pour la mémoire tampon <variable> non allouée |
|
avertissement C6201 : dépassement de mémoire tampon de <variable> (sans doute allouée par la pile) : l'index <nom> est en dehors de la plage d'index valide <min> à <max> |
|
avertissement C6202 : dépassement de mémoire tampon de <variable> (sans doute allouée par la pile), lors de l'appel à <fonction> : la longueur <taille> dépasse la taille <max> du tampon |
|
avertissement C6203 : dépassement de mémoire tampon <variable> non allouée par la pile lors de l'appel à <fonction> : la longueur <taille> dépasse la taille du tampon |
|
avertissement C6204 : dépassement de mémoire tampon possible lors de l'appel à <fonction> : utilisation du paramètre non vérifié <variable> |
|
avertissement C6209 : lors de l'utilisation de 'sizeof<variable1>' en tant que paramètre <numéro> dans l'appel à <fonction>, où <variable2> peut être un tableau de caractères larges, avez-vous utilisé le nombre de caractères plutôt que le nombre d'octets ? |
|
avertissement C6211 : mémoire <pointeur> manquante liée à une exception. Si possible, utilisez un bloc catch local pour nettoyer la mémoire |
|
avertissement C6214 : cast entre types d'entiers sémantiquement différents : HRESULT vers un type Boolean |
|
avertissement C6215 : cast entre types d'entiers sémantiquement différents : type Boolean vers HRESULT |
|
avertissement C6216 : cast inséré par le compilateur entre types intégraux sémantiquement différents : type Boolean vers HRESULT |
|
avertissement C6217 : cast implicite entre types d'entiers sémantiquement différents : test de HRESULT avec 'not'. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED. |
|
avertissement C6219 : cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à 1 ou TRUE. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED. |
|
avertissement C6220 - cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à -1. Si possible, utilisez la macro SUCCEEDED ou FAILED à la place |
|
avertissement C6221 : cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à un entier. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED. |
|
avertissement C6225 : cast implicite entre types d'entiers sémantiquement différents : assignation de 1 ou TRUE à HRESULT. Si possible, utilisez S_FALSE à la place. |
|
avertissement C6226 : cast implicite entre types d'entiers sémantiquement différents : assignation de -1 à HRESULT. Si possible, utilisez E_FAIL à la place. |
|
avertissement C6230 : cast implicite entre types d'entiers sémantiquement différents : utilisation de HRESULT dans un contexte Boolean |
|
avertissement C6235 : (<constante non nulle> || <expression>) est toujours une constante non nulle |
|
avertissement C6236 : (<expression> || <constante non nulle>) est toujours une constante non nulle |
|
avertissement C6237 : (<zéro> && <expression>) est toujours zéro. <expression> n'est jamais évalué et peut avoir des effets secondaires |
|
avertissement C6239 : (<constante non nulle> && <expression>) correspond toujours au résultat de <expression>. Souhaitiez-vous utiliser l'opérateur de bits AND ? |
|
avertissement C6240 : (<expression> && <constante non nulle>) correspond toujours au résultat de <expression>. Souhaitiez-vous utiliser l'opérateur de bits AND ? |
|
avertissement C6242 : Un saut hors de ce bloc try provoque un déroulement local et entraîne de sérieuses pertes en termes de performances |
|
avertissement C6244 : la déclaration locale de <variable> masque la déclaration précédente à la ligne <ligne> de <fichier> |
|
avertissement C6246 : la déclaration locale de <variable> masque la déclaration du même nom dans la portée externe. Informations supplémentaires : reportez-vous à la déclaration précédente à <emplacement>. |
|
avertissement C6248 : La définition d'une liste DACL d'un SECURITY_DESCRIPTOR à NULL aboutit à un objet non protégé |
|
avertissement C6250 : l'appel de <fonction> sans l'indicateur MEM_RELEASE peut libérer de la mémoire mais pas les descripteurs d'adresses virtuelles (VAD) ; cela peut provoquer des fuites dans l'espace d'adressage |
|
avertissement C6255 : _alloca signale un échec en levant une exception de dépassement de capacité de la pile. Si possible, utilisez _alloca_s à la place. |
|
avertissement C6258 : l'utilisation de TerminateThread ne permet pas un nettoyage approprié des threads |
|
avertissement C6259 : impossible d'atteindre le code étiqueté : (<expression> & <constante>) dans un switch-expr ne peut pas prendre la valeur <étiquette-case> |
|
avertissement C6260 : sizeof * sizeof est quasiment toujours incorrect. Souhaitiez-vous utiliser un nombre de caractères ou d'octets ? |
|
avertissement C6262 : la fonction utilise <constante> octets de pile : dépasse /analyze:stacksize<constante>. Si possible, déplacez certaines données vers le tas |
|
avertissement C6263 : utilisation de _alloca dans une boucle : cette opération peut rapidement provoquer un débordement de la pile |
|
avertissement C6268 : ordre des opérations incorrect : (<TYPE1>)(<TYPE2>)x + y. Parenthèses sans doute manquantes dans (<TYPE1>)((<TYPE2>)x + y) |
|
avertissement C6269 : ordre des opérations peut-être incorrect : déréférencement ignoré |
|
avertissement C6270 : argument float manquant dans <fonction> : ajoutez un argument float correspondant au spécificateur de conversion <numéro> |
|
avertissement C6271 : argument supplémentaire passé à <fonction> : la chaîne de format n'utilise pas le paramètre <numéro> |
|
avertissement C6272 : valeur non float passée comme argument <numéro> lorsqu'une valeur float est requise dans l'appel à <fonction> |
|
avertissement 6273 - valeur non entière passée comme paramètre <numéro> lorsqu'une valeur entière est requise dans l'appel à <fonction> : si une valeur de pointeur est passée, utilisez %p |
|
avertissement C6274 : valeur autre qu'un caractère passée comme paramètre <numéro> lorsqu'un caractère est requis dans l'appel à <fonction> |
|
avertissement C6276 : cast entre types de chaînes sémantiquement différentes : char * à wchar_t *. L'utilisation d'une chaîne non valide peut engendrer un comportement non défini |
|
avertissement C6277 : nom d'application NULL avec chemin sans guillemets dans l'appel à <fonction> : un chemin contenant des espaces peut provoquer une faille de sécurité |
|
avertissement C6278 : <variable> est alloué avec un tableau new [], mais supprimé avec une variable scalaire delete. Aucun destructeur ne sera appelé |
|
avertissement C6279 : <variable> est alloué avec une variable scalaire new, mais supprimé avec un tableau delete [] |
|
avertissement C6280 : <variable> est alloué avec <fonction>, mais supprimé avec <fonction> |
|
avertissement 6281 - ordre des opérations incorrect : les opérateurs relationnels ont une priorité plus élevée que les opérateurs de bits |
|
avertissement C6282 : Opérateur incorrect : assignation d'une constante dans un contexte Boolean. Si possible, utilisez '==' à la place. |
|
avertissement C6283 : <variable> est alloué avec un tableau new [], mais supprimé avec une variable scalaire delete. |
|
avertissement C6284 : objet passé comme paramètre '%d' lorsqu'une chaîne est requise dans l'appel à <fonction>. |
|
avertissement C6285 : (<constante non nulle> || <constante non nulle>) est toujours une constante non nulle. Souhaitiez-vous utiliser l'opérateur de bits AND ? |
|
avertissement C6286 : (<constante non nulle> || <expression>) est toujours une constante non nulle. <expression> n'est jamais évalué et peut avoir des effets secondaires |
|
avertissement C6287 : code redondant : les sous-expressions gauche et droite sont identiques |
|
avertissement C6288 : Opérateur incorrect : l'inclusion mutuelle sur && est toujours égale à zéro. Souhaitiez-vous utiliser || à la place ? |
|
avertissement C6289 : Opérateur inexact : l'exclusion mutuelle sur || est toujours une constante non nulle. Souhaitiez-vous utiliser && à la place ? |
|
avertissement C6290 : Opération de bits sur résultat logique : ! bénéficie d'une priorité supérieure à celle de &. Utilisez && ou (! (x & y)) à la place |
|
avertissement C6291 : Opération de bits sur résultat logique : ! bénéficie d'une priorité supérieure à celle de |. Utilisez || ou (!(x | y)) à la place |
|
avertissement C6292 : boucle mal définie : calcule à partir de la valeur maximale |
|
avertissement C6293 : Boucle mal définie : calcule à rebours à partir de la valeur minimale |
|
avertissement C6294 : Boucle mal définie : la condition initiale ne satisfait pas les tests. Le corps de la boucle n'est pas exécuté |
|
avertissement C6295 : Boucle mal définie : les valeurs <variable> figurent toujours dans une plage de "min" à "max". La boucle s'exécute à l'infini |
|
avertissement C6296 : Boucle mal définie. Le corps de la boucle n'a été exécuté qu'une seule fois |
|
avertissement C6297 : Dépassement arithmétique : la valeur 32 bits est décalée, puis définie en cast à une valeur 64 bits. Le résultat peut être différent de la valeur attendue |
|
avertissement C6298 : utilisation d'une chaîne en lecture seule <pointeur> comme argument de chaîne accessible en écriture. Cette opération peut inciter à des tentatives d'écriture dans la mémoire statique en lecture seule et provoquer des pannes aléatoires |
|
avertissement C6299 : la comparaison explicite d'un champ de bits avec un type Boolean provoque des résultats inattendus |
|
avertissement C6299 : la comparaison explicite d'un champ de bits avec un type Boolean provoque des résultats inattendus |
|
avertissement C6303 : incompatibilité de chaîne de format : une chaîne de caractères est passée comme paramètre <numéro> lorsqu'une chaîne à caractères larges est requise dans l'appel à <fonction> |
|
avertissement C6305 : incompatibilité possible entre les quantités sizeof et countof |
|
avertissement C6306 : appel à <fonction> incorrect : si possible, utilisez <fonction> qui accepte un type va_list comme argument |
|
avertissement C6308 : 'realloc' peut retourner un pointeur Null : l'assignation d'un pointeur Null à <variable> passé comme argument à 'realloc' peut entraîner une fuite du bloc de mémoire d'origine |
|
avertissement C6309 : l'argument <number> est nul: il ne correspond pas à la spécification de la fonction <function> |
|
avertissement C6310 : une constante non autorisée dans le filtre d'exception peut provoquer un comportement inattendu |
|
avertissement C6312 : Boucle infinie possible : utilisation de la constante EXCEPTION_CONTINUE_EXECUTION dans l'expression de filtre d'exception d'une instruction try-except |
|
avertissement C6313 : Opérateur incorrect : impossible de tester l'indicateur de valeur zéro avec l'opérateur de bits AND. Procédez à un test d'égalité pour vérifier la présence d'indicateurs de valeur zéro |
|
avertissement C6314 : Ordre des opérations incorrect : l'opérateur de bits OR a une priorité plus élevée que l'opérateur d'expression conditionnelle. Ajoutez des parenthèses pour préciser clairement le but recherché. |
|
avertissement C6315 : Ordre des opérations incorrect : l'opérateur de bits AND a une priorité plus élevée que l'opérateur de bits OR. Ajoutez des parenthèses pour préciser clairement le but recherché. |
|
avertissement C6316 : Opérateur incorrect : l'expression testée est constante et non nulle. Utilisez l'opérateur de bits AND pour déterminer si les bits sont définis |
|
avertissement C6317 : opérateur incorrect : l'opérateur NOT logique (!) n'est pas interchangeable avec l'opérateur de complément à 1 (~) |
|
avertissement C6318 : __try/__except mal défini : utilisation de la constante EXCEPTION_CONTINUE_SEARCH ou d'une autre constante égale à zéro dans l'expression de filtre d'exception. Le code dans le bloc de gestion d'exceptions n'est pas exécuté |
|
avertissement C6319 : l'utilisation de l'opérateur virgule au sein d'une expression testée empêche la prise en compte de l'argument de gauche lorsqu'il n'a aucun effet secondaire |
|
avertissement C6320 : l'expression de filtre d'exception correspond à la constante EXCEPTION_EXECUTE_HANDLER. Cela risque de masquer les exceptions qui n'étaient pas destinées à être gérées |
|
avertissement C6322 : bloc empty _except |
|
avertissement 6323 - utilisation d'un opérateur arithmétique dans les types Boolean |
|
avertissement C6324 : utilisation incorrecte possible de <fonction1> : souhaitiez-vous utiliser <fonction2> ? |
|
avertissement C6326 : comparaison éventuelle d'une constante avec une autre |
|
avertissement C6327 : dépassement de mémoire tampon possible : SysAllocStringLen copie les caractères <numéro> de la chaîne <variable> sans valider le nombre de caractères à copier. Le code risque de se bloquer |
|
avertissement C6328 : <type> passé en tant que paramètre <numéro> lorsque <type> est requis dans l'appel à <fonction> |
|
avertissement C6331 : Paramètre non valide : le passage de MEM_RELEASE et MEM_DECOMMIT en association avec <fonction> n'est pas autorisé. Cela provoque l'échec de cet appel. |
|
avertissement C6332 : paramètre non valide : le passage de zéro comme paramètre dwFreeType vers <fonction> n'est pas autorisé. Cet appel va échouer. |
|
avertissement C6333 : Paramètre non valide : le passage de MEM_RELEASE et d'un paramètre dwSize non nul vers <fonction> n'est pas autorisé. Cet appel va échouer. |
|
avertissement C6334 : l'application de l'opérateur sizeof à une expression avec opérateur peut provoquer des résultats inattendus |
|
avertissement C6335 : handle d'informations de processus manquant <NomHandle> |
|
avertissement C6336 : l'opérateur arithmétique a priorité sur l'opérateur de question. Utilisez des parenthèses pour clairement définir le but recherché |
|
avertissement C6381 : L'API de fermeture <fonction> exige un dwReason ou lpMessage valide |
|
avertissement C6383 : dépassement de mémoire tampon suite à la conversion d'un nombre d'éléments en nombre d'octets : un nombre d'éléments est attendu pour le paramètre <numéro> dans l'appel à <fonction> |
|
avertissement C6384 : division d'un pointeur avec opérateur sizeof par une autre valeur |
|
avertissement C6385 : données non valides : accès à <NomMémTampon>, en cours, la taille lisible est <taille1> octets, mais <taille2> octets peuvent être lus : Lignes : x, y |
|
avertissement C6386 : dépassement de mémoire tampon : accès à <NomMémoireTampon> en cours, la taille accessible en écriture est <taille1> octets, mais <taille2> octets peuvent être écrits. Lignes : x, y |
|
avertissement C6387 : <argument> peut être <valeur> : ceci n'est pas conforme à la spécification de la fonction <NomFonction> : Lignes : x, y |
|
avertissement C6388 : <argument> ne peut pas être <valeur> : ceci n'est pas conforme à la spécification de la fonction <NomFonction> : Lignes : x, y |
|
avertissement C6400 : Utilisation de <NomFonction> en vue d'effectuer une comparaison ne tenant pas compte de la casse avec la chaîne constante <NomChaîne>. Donne des résultats inattendus avec les paramètres régionaux autres que l'anglais |
|
avertissement C6401 : Utilisation de <NomFonction> dans les paramètres régionaux par défaut en vue d'effectuer une comparaison ne tenant pas compte de la casse avec la chaîne constante <NomChaîne>. Donne des résultats inattendus avec les paramètres régionaux autres que l'anglais |
|
avertissement C6500 : annotation non valide : la valeur de la propriété <nom> n'est pas valide |
|
avertissement C6501 : conflit d'annotation : la propriété <nom> est en conflit avec une propriété précédemment spécifiée |
|
avertissement C6503 : conflit d'annotation : les références peuvent ne pas être marquées Null=Yes ou Null=Maybe |
|
avertissement C6504 : annotation non valide : la propriété peut uniquement être employée dans des valeurs de type pointeur, pointeur vers membre ou tableau |
|
avertissement C6505 : annotation non valide : la propriété MustCheck ne peut pas être utilisée dans des valeurs de type void |
|
avertissement C6506 : annotation non valide : la propriété <nom> peut uniquement être employée dans des valeurs de type pointeur ou tableau |
|
avertissement C6507 : conflit d'annotation : la propriété Null définie sur Deref=0 dans une condition préalable doit être un sous-ensemble de la propriété Null dans la précondition |
|
avertissement C6508 : annotation non valide : l'accès en écriture n'est pas autorisé dans les valeurs constantes |
|
avertissement C6509 : annotation non valide : 'return' ne peut pas être référencé à partir d'une précondition |
|
avertissement C6510 : annotation non valide : la propriété NullTerminated peut uniquement être employée dans des valeurs de type pointeur ou tableau |
|
avertissement C6511 : annotation non valide : la propriété MustCheck doit avoir comme valeur Yes ou No |
|
avertissement C6512 : annotation non valide : la propriété Null doit être Maybe si la propriété Valid a la valeur No |
|
avertissement C6513 : annotation non valide : ElementSizeConst exige des propriétés de taille supplémentaires |
|
avertissement C6514 : annotation non valide : la valeur de la propriété <nom> dépasse la taille du tableau |
|
avertissement C6515 - annotation non valide : la propriété <nom> peut uniquement être utilisée dans des valeurs de type pointeur |
|
avertissement C6516 : annotation non valide : aucune propriété n'est spécifiée pour l'attribut <nom> |
|
avertissement C6517 : conflit d'annotation: ValidElementsConst et ValidBytesConst peuvent ne pas être spécifiées sur les buffers qui ne sont pas lisibles. |
|
avertissement C6518 : conflit d'annotation : WriteableElementsConst et WriteableBytesConst peuvent ne pas être spécifiées sur les buffers qui ne sont inscriptibles |
|
avertissement C6521 : spécification de taille non valide : l'opérateur * peut uniquement être appliqué à des types de pointeurs |
|
avertissement C6522 : spécification de taille non valide : l'expression doit être de type intégral |
|
avertissement C6523 : spécification de taille non valide : le paramètre <nom> est introuvable |
|
avertissement C6525 : spécification de taille non valide : la valeur de la propriété n'est peut-être pas valide |
|
avertissement C6526 - spécification de taille non valide : l'expression doit être de type pointeur ou tableau |
|
avertissement 6530 : style de chaîne de format non reconnu <nom> |
|
avertissement C6535 : La taille de la mémoire tampon ne peut pas être <n>, soit supérieure à max(size_t) |
Voir aussi
Concepts
Indications pour l'écriture de code sécurisé