Une nouvelle version de l'analyseur statique de code cppcheck 2.7 est sortie, permettant d'identifier divers types d'erreurs dans les codes écrits en C et C++, y compris lors de l'utilisation de syntaxes non standards, typiques des systèmes embarqués. Une collection de plugins est fournie pour intégrer cppcheck avec divers systèmes de développement, d'intégration continue et de tests, ainsi que des fonctionnalités telles que la vérification de la conformité du code au style de codage. Pour l'analyse du code, il est possible d'utiliser à la fois un parseur interne et un parseur externe de Clang. Un script donate-cpu.py est également inclus pour fournir des ressources locales pour effectuer un travail de vérification collaborative du code des paquets Debian. Les sources du projet sont distribuées sous la licence GPLv3.
Le développement de cppcheck est axé sur l'identification des problèmes liés aux comportements indéfinis et à l'utilisation de constructions dangereuses pour la sécurité. L'objectif est également de minimiser les faux positifs. Les problèmes identifiés comprennent : des pointeurs vers des objets inexistants, des divisions par zéro, des débordements d'entiers, des opérations incorrectes de décalage binaire, des conversions erronées, des problèmes de gestion de la mémoire, une utilisation incorrecte de la STL, la déréférencement de pointeurs nuls, des vérifications effectuées après l'accès réel au tampon, des débordements de tampon et l'utilisation de variables non initialisées.
Parallèlement, l'entreprise suédoise Cppcheck Solutions AB développe une version avancée nommée Cppcheck Premium, qui offre une analyse de la présence de boucles infinies, une recherche améliorée des variables non initialisées et une analyse approfondie des débordements de tampon.
Dans la nouvelle version :
- Le support des représentations (view) des conteneurs a été ajouté : un attribut view a été ajouté à la balise de la bibliothèque, indiquant que la classe est une représentation. Le code d'analyse de la durée de vie a été mis à jour pour utiliser cet attribut lors de la recherche de conteneurs « pendus » ;
- Les vérifications ont été améliorées ;
- Les bugs accumulés ont été corrigés et les lacunes de l'analyseur ont été comblées.
Source : opennet.ru
