Ensemble de règles des règles recommandées natives
Ces règles sont focalisées sur les problèmes les plus fréquents et critiques rencontrés dans votre code natif, notamment les failles de sécurité potentielles et les blocages d'applications. Vous devez inclure cet ensemble de règles dans tout ensemble de règles personnalisé que vous créez pour vos projets natifs. Cet ensemble de règles est conçu pour être configuré avec l'édition Visual Studio Professional et ultérieure.
Règle |
Description |
---|---|
Utilisation de d'une mémoire non initialisée |
|
Suppression de la référence du pointeur NULL |
|
Utilisation d'une valeur non vérifiée |
|
Valeur de retour ignorée |
|
Terminaison par zéro de l'appel |
|
Terminaison par zéro manquant |
|
Mauvaise Concaténation |
|
Argument String manquant pour formater la fonction |
|
Argument Integer manquant pour formater la fonction |
|
Argument Pointer manquant pour formater la fonction |
|
Argument String Pointer manquant pour formater la fonction |
|
Renvoi de la mémoire non initialisée |
|
L'index dépasse la taille maximale autorisée par la mémoire tampon |
|
L'index dépasse la taille maximale autorisée par la mémoire tampon allouée par la pile |
|
Cast non valide de HRESULT en BOOL |
|
Cast non valide de BOOL en HRESULT |
|
Transtypage inséré par le compilateur de BOOL vers HRESULT non valide |
|
Test HRESULT non valide avec NOT |
|
HRESULT comparé à -1 non valide |
|
Affectation de HRESULT à -1 non valide |
|
Utilisation non valide de HRESULT comme booléen |
|
Constante non nulle avec OR logique |
|
OR logique avec constante non nulle |
|
Un zéro avec un AND logique perd ses effets secondaires |
|
Déroulement local provoqué |
|
Création d'un DACL Null |
|
Descripteurs d'adresses non commercialisés |
|
Utilisation non protégée d'alloca |
|
Utilisation de Terminate Thread |
|
Code mort dans le commutateur limité OR au niveau du bit |
|
Utilisation de l'arithmétique d'octets |
|
Utilisation excessive de la pile |
|
Utilisation d'alloca dans une boucle |
|
Parenthèses manquantes dans le transtypage |
|
Déréférencement du pointeur ignoré |
|
Argument float manquant pour le formatage de la fonction |
|
Argument supplémentaire pour le formatage de la fonction |
|
Argument non float pour le formatage de la fonction |
|
Argument non entier pour le formatage de la fonction |
|
Argument autre qu'un caractère pour le formatage de la fonction |
|
Transtypage de chaîne non valide |
|
Appel CreateProcess non valide |
|
Incompatibilité entre tableau new et scalaire delete |
|
Incompatibilité entre tableau new et tableau delete |
|
Incompatibilité entre allocation et désallocation de mémoire |
|
Priorité de relation de bits |
|
L'affectation remplace le test |
|
Incompatibilité primitive entre tableau new et scalaire delete |
|
Argument objet manquant pour le formatage de la fonction |
|
OR logique de constantes |
|
Perte des effets secondaires de l'OR logique non nul |
|
Test redondant |
|
L'inclusion mutuelle sur l'AND logique est false |
|
L'exclusion mutuelle sur l'OR logique est true |
|
Priorité NOT logique et AND au niveau du bit |
|
Priorité NOT logique et OR au niveau du bit |
|
La boucle calcule à partir de la valeur maximale |
|
La boucle calcule à partir de la valeur minimale |
|
Le corps de la boucle n'est jamais exécuté |
|
Boucle infinie |
|
Boucle exécutée une seule fois |
|
Résultat du transtypage décalé en une taille supérieure |
|
Comparaison champ de bits et booléen |
|
Argument de chaîne de caractères non valide pour formater la fonction |
|
Argument de chaîne de caractères larges invalide pour formater la fonction |
|
Incompatibilité entre la taille et la quantité |
|
Appel de fonction d'argument de variable non valide |
|
Fuite de réallocation |
|
Constante de filtre d'exception non autorisée |
|
Boucle d'Exception continue Exception |
|
Priorité d'OR au niveau du bit |
|
Complément NOT NOT |
|
Exception de Recherche continue |
|
Ignoré par la virgule |
|
Copie d'une chaîne au lieu d'une comparaison de chaînes |
|
Incompatibilité de type d'argument possible |
|
Indicateurs VirtualFree non valides |
|
Paramètre VirtualFree non valide |
|
Taille VirtualFree non valide |
|
Fuite du handle de processus |
|
Informations sur l'arrêt manquantes |
|
Dépassement de mémoire tampon en raison de la conversion de element-count en byte-count |
|
Division de taille du pointeur |
|
Dépassement en lecture |
|
Dépassement en écriture |
|
Valeur du paramètre non valide |
|
Valeur du paramètre non valide |
|
Propriété d'attribut non-valide |
|
Valeurs de propriété d'attribut en conflit |
|
Les références ne peut pas avoir la valeur null |
|
Null sur élément non pointeur |
|
MustCheck sur Void |
|
Taille de mémoire tampon sur élément non pointeur ou tableau |
|
Incompatibilité de Null de déférencement de zéro |
|
Accès en écriture sur constante |
|
Retour utilisé sur condition préalable |
|
Terminaison par Null sur élément non pointeur |
|
MustCheck doit avoir la valeur Yes ou No |
|
Taille d'élément sans taille de mémoire tampon |
|
Taille de mémoire tampon dépasse la taille du tableau |
|
Taille de mémoire tampon sur élément non pointeur |
|
Pas de propriétés sur l'attribut |
|
Taille valide dans mémoire tampon non lisible |
|
Taille accessible en écriture dans mémoire tampon non accessible en écriture |
|
Annotation non valide : la valeur de la propriété 'NeedsRelease' doit être définie à Yes ou No |
|
Déférencement de String Size non valide |
|
Type de String Size Invalid |
|
Paramètre de taille de chaîne non valide |
|
Chaîne de taille non valide. Emplacement inaccessible. |
|
Taille du type de tampon de chaîne invalide |
|
Annotation non valide : la propriété 'NeedsRelease' peut ne pas être utilisée dans des valeurs de type void |
|
Style de chaîne de format non reconnu |
|
L'utilisation d'annotations d'attribut sur cette fonction invalidera l'ensemble de ses annotations __declspec existantes |
|
Spécification de taille non valide : l'expression n'est pas analysable |
|
Deref= ou Notref= non valide : l'expression n'est pas analysable |
|
La valeur n'est pas une valeur Yes/No/Maybe valide |
|
La valeur n'est pas une valeur de chaîne |
|
La valeur n'est pas un nombre |
|
Erreur d'expression de l'annotation inattendue |
|
Le nombre d'arguments attendus pour l'annotation ne correspond pas au nombre réel d'arguments pour l'annotation |
|
Erreur d'Annotation pour l'annotation inattendue |
|
Échec de l'enregistrement du fichier journal XML |
|
Condition de concurrence |
|
Impossible d'utiliser correctement l'opération à blocage |
|
Appelant ne parvenant pas à maintenir le verrou |
|
Appelant ne parvenant pas à libérer le verrou |
|
L'appelant ne peut maintenir aucun verrou |
|
Échec de la libération du verrou |
|
Échec de la libération du verrou |
|
Libération d'un verrou non maintenu |
|
Erreur d'annotation SAL d'accès concurrentiel |
|
L'expression n'a pas la valeur true dans cet appel |
|
Le paramètre annoté doit être un pointeur |
|
La ou les classes de fonction sur cette fonction ne correspondent pas à la ou les classes de fonction sur le typedef utilisé pour la définir. |
|
La fonction attribuée ou passée doit avoir une annotation _Function_class_ pour au moins une classe |
|
Le pointeur de la fonction attribuée est annoté avec la classe de fonction laquelle n'est pas contenue dans la ou les listes de classes de fonction. |
|
Le type du paramètre réel doit correspondre exactement au type |
|
Une variable à laquelle vous accédez via une fonction Interlocked doit toujours être accédée via cette fonction. |
|
Accès à une variable locale via une fonction Interlocked |
|
La fonction doit être appelée depuis l'intérieur d'un bloc try/except |
|
L'argument de la variable devrait plutôt être une constante (littéral) |
|
L'argument de la constante devrait plutôt être une variable |
|
Utilisez une autre fonction. |
|
Error annotation |
|
La fonction ne doit jamais être appelée depuis l'intérieur d'un bloc try/except |
|
L'argument est passé à une fonction qui attends un pointeur vers un objet (pas un pointeur vers un pointeur) |
|
Déréférencer le pointeur NULL.Le pointeur contient la même valeur NULL que contenait un autre pointeur. |
|
L'argument pouvait être une valeur et il est une copie de la valeur trouvée dans le pointeur |
|
La variable contient une valeur qui doit être examinée |
|
La spécification n'est pas satisfaite. (L'expression n'a pas la valeur true.) |
|
Référence non autorisée au membre non statique |
|
Référence ambiguë au membre de classe. |
|
_Success_ ou _On_failure_ utilisés dans un contexte non autorisé |
|
L'opérande de gauche pointe vers un struct, utiliser '->' |
|
L'opérande de gauche est un struct, utiliser '.' |
|
La déclaration pour un symbole possède une déclaration en conflit |
|
Les annotations pour le contexte __on_failure ne doivent pas se trouver dans un contexte préalable explicite |
|
Nom du contexte statique attendu pour SAL_context |
|
Expression de pointeur attendue pour l'annotation |
|
L'annotation _Use_decl_annotations_ doit être utilisée pour référencer, sans modification, une déclaration antérieure. |
|
Les noms des paramètres d'attribut doivent être p1…p9 |
|
Le typefix ne peut pas être appliqué à un paramètre qui contient déjà un typefix |
|
L'annotation checkReturn s'applique uniquement aux postconditions pour le paramètre fonction spécifique. |
|
Pour la fonction, le nombre de paramètres de l'annotation ne correspond pas au nombre trouvé dans le fichier |
|
Pour le paramètre de la fonction, le paramètre de l'annotation ne correspond pas au nombre trouvé sur le fichier |
|
Membre de l'énumération attendu pour une annotation, le paramètre dans l'annotation |
|
Expression d'entier attendue pour annotation du paramètre dans l'annotation |
|
Expression de chaîne attendue pour le paramètre dans l'annotation |
|
__yes, __no, ou __maybe attendu pour l'annotation |
|
Jeton/identificateur attendu pour le paramètre de l'annotation |
|
L'annotation requiert des paramètres |
|
N'a pas trouvé le nombre correcte de paramètres requis dans l'annotation |
|
L'annotation ne peut pas être un PrimOp également (dans la déclaration actuelle) |
|
L'annotation ne peut pas être un PrimOp également (voir la déclaration antérieure) |
|
Annotation paramètre : le type ne peut pas être utilisé dans les annotations |
|
L'annotation ne prend pas en charge des paramètres |
|
Le type de paramètre n'a aucun membre. |
|
L'annotation n'est valide que sur un tableau |
|
pre, post, ou deref ne sont appliqués à aucune annotation |
|
pre, post, ou deref sont appliqués à un bloc |
|
L'expression __at ne s'applique pas à la fonction active |
|
La fonction ne peut pas être une annotation autonome |
|
L'annotation ne peut pas être utilisée dans une expression |
|
L'annotation sur paramètre n'est plus prise en charge |
|
L'annotation sur paramètre possède plusieurs valeurs, stringValue, et longValue.Utilisez paramn=xxx |
|
L'annotation sur paramètre possède à la fois value, stringValue, ou longValue ; et paramn=xxx.Utiliser uniquement paramn=xxx |
|
L'annotation sur paramètre possède param2 et non param1 |
|
L'Annotation pour la fonction sur paramètre n'est pas reconnu |
|
L'annotation pour la fonction sur paramètre nécessite plus de déréférencements que ne l'autorise le type réel annoté |
|
L'annotation pour la fonction possède un paramètre/annotation externe non analysable |
|
L'annotation pour la fonction annote 'this' sur une fonction non membre |
|
Le paramètre d'annotation pour la fonction ne correspond pas au type du paramètre |
|
Annotation incohérente pour la function : l'instance précédente présente une erreur. |
|
Annotation incohérente pour la fonction : Cette instance a une erreur. |
|
Annotation incohérente pour la fonction : paramètre a une annotation sur cet instance. |
|
Annotation incohérente pour la fonction : paramètre a une annotation sur cet instance. |
|
dynamic_cast<>() n'est pas pris en charge dans les annotations |
|
Une erreur de syntaxe dans l'annotation a été trouvée dans la fonction pour l'annotation |
|
Une erreur de syntaxe dans une annotation conditionnelle a été trouvée pour l'annotation intrinsèque |
|
Les valeurs des listes de résultats doivent être des constantes. |
|
Une erreur de syntaxe dans les annotations a été trouvée dans la fonction d'annotation. |
|
L'annotation pour la fonction, paramètre lors de l'examen est incohérente avec la déclaration de la fonction |
|
Pour la fonction, les indices sont incohérentes avec la déclaration de la fonction |
|
Le paramètre de _Macro_value_ a la valeur null |
|
Pour le symbole, un 'begin' a été trouvé sans 'end' correspondant |
|
Pour le symbole, un 'end' a été trouvé sans 'begin' correspondant |
|
Les chaînes de format doivent se trouver dans les conditions préalables |
|
Pour la fonction, une erreur de syntaxe dans le paramètre |
|
Pour la fonction, une erreur de syntax vers la fin |
|
Pour la fonction erreur dans l'annotation _At_() (nom de paramètre non reconnu) |
|
Pour la fonction, erreur dans l'annotation _At_() (nom de paramètre non valide) |
|
Pour la fonction : ReadableTo ou WritableTo n'a pas eu de spécification de limites en tant que paramètre |
|
L'annotation pour la fonction contient plus d'Externals que le nombre réel de paramètres |
|
post null/notnull au niveau 0 deref n'a pas de sens pour la fonction. |
|
Opérandes d'expression de types incompatibles pour l'opérateur |
|
Aucune annotation pour la première déclaration de la fonction. |
|
Un opérateur supplémentaire _Deref_ a été trouvé sur l'annotation. |
|
Un opérateur ambigu _Deref_ a été trouvé sur l'annotation. |
|
Un opérateur _Notref_ placé de manière incorrecte a été trouvé appliqué au token. |
|
Une erreur a été découverte lors de l'analyse du token. |
|
L'annotation sur le paramètre est obsolète |
|
L'annotation sur le paramètre est obsolète |
|
L'annotation décrit une situation qui n'est pas applicable de manière conditionnelle. |
|
L'annotation décrit lorsqu'une valeur dynamique (une variable) ne peut pas être utilisée dans la condition. |