prog:cppcheck
En ligne de commande
cppcheck --inconclusive --enable=all -Idossier . -j 8 &> cppcheck.log
--inconclusive
: peut entrainer des faux positifs.
- Les dossiers inclus
-I
permettant au préprocesseur de travailler. Il est conseillé de mettre lesinclude
du projet, éventuellement ceux des librairies avoisinantes que l'on souhaite auditionner mais surtout pas les systèmes (ni Qt, boost). Cela augmente le temps d'analyse de façon exponentielle et ne change rien.
--enable=all
: active toutes les règles d'analyse.
--check-config
,--check-library
: affiche lesinclude
que le préprocesseur n'a pas réussi à remplacer.
Par défaut la configuration utilise --library=std.cfg
. Mais il y a de nombreux autres cas qui peuvent être intéressant à étudier : gtk, qt, …
cmake
S'intègre parfaitement avec CMake.
Il faut commencer par activer l'option set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
.
Puis lancer la génération des fichiers Makefile
avec CC="clang" CXX="clang++" cmake -S . -B build
pour générer également le fichier compile_commands.json
.
cppcheck --enable=all --project=compile_commands.json --error-exitcode=1 --inline-suppr --template="{file},{line},{severity},{id},{message}" --suppressions-list=../.cppcheck-suppressions
Il est important de personnaliser le message template pour afficher le code d'erreur id
.
Exemple de fichier de suppression:
- .cppcheck-suppressions
unusedFunction:*/cpp/boost/executor/executor.cpp unusedFunction:*/cpp/attribute/restrict1.c
prog/cppcheck.txt · Dernière modification : 2021/04/11 21:18 de root