Comment utiliser l'option de filtre de suppression de ligne cppcheck pour le code C?
-
23-10-2019 - |
Question
Je voudrais utiliser Cppcheck pour l'analyse de code statique de mon code C ++. J'ai appris que je peux supprimer une sorte d'avertissements avec commande --inline-suppr
.
Cependant, je ne peux pas trouver ce que « suppressed_error_id » Je devrais mettre dans le commentaire:
// cppcheck-suppress "suppressed_error_id"
La solution
Selon l'aide de cppcheck:
L'identifiant d'erreur est l'identifiant que vous voulez supprimer. La meilleure façon de l'obtenir consiste à utiliser l'indicateur de ligne de commande --xml. Copiez et collez la chaîne d'identification de la sortie xml.
Alors courez cppcheck contre un code qui contient l'erreur avec le drapeau de --xml
, et puis regardez dans le fichier XML généré pour trouver son nom.
Autres conseils
Vous pouvez modifier le modèle de sortie pour afficher l'ID d'erreur de la ligne de commande, ce qui est tout à fait propre.
Pour une sortie de format Visual Studio avec id d'erreur affiché, ajoutez ceci à votre ligne de commande:
--template "{file}({line}): {severity} ({id}): {message}"
Cela produira quelque chose comme de sortie ceci:
s:\src\jpeg.cpp(123): error (bufferAccessOutOfBounds): Buffer access out-of-bounds: abRY
que vous pouvez ensuite suppress en ajoutant la ligne:
// cppcheck-suppress bufferAccessOutOfBounds
Pour la ligne précédente dans le fichier source.
Selon le cppcheck page de manuel , vous pouvez utiliser l'option --template
pour changer la par défaut la sortie à inclure l'identifiant, par exemple,
cppcheck /the/src/file --template='{file}:{line},{severity},{id},{message}'
Si vous utilisez l'interface graphique, vous pouvez faire un clic droit sur le message que vous voulez supprimer pour faire apparaître un menu. Sélectionnez "Copier un message id". Coller l'identifiant du message dans votre code à la place de "suppressed_error_id".