Cppcheck
Cppcheck est un outil d'analyse de code statique pour les langages de programmation C et C++. C'est un outil polyvalent qui permet de vérifier du code non standard[3]. Le créateur et développeur principal est Daniel Marjamäki.
Créateur | Daniel Marjamäki |
---|---|
Première version | 8 mai 2007 |
Dernière version | 2.8 ()[1],[2] |
Dépôt | github.com/danmar/cppcheck |
Écrit en | C++ |
Système d'exploitation | Type Unix |
Environnement | Cross-platform |
Langues | Anglais, Néerlandais, Finlandais, Suédois, Allemand, Russe, Polonais, Japonais, Serbe |
Type | Qualité logicielle |
Licence | GNU General Public License |
Site web | cppcheck.sourceforge.net |
Cppcheck est un logiciel libre sous la Licence Publique Générale de GNU.
Caractéristiques
Cppcheck prend en charge une large variété de vérifications statiques qui peuvent ne pas être couverts par le compilateur lui-même. Ces vérifications sont des contrôles d'analyse statique qui peuvent être effectués au niveau du code source. Le programme se concentre sur les contrôles rigoureux de l'analyse statique, plutôt que par heuristique.
Certains des contrôles qui sont pris en charge comprennent :
- Vérification de variables automatiques.
- La vérification des limites de la taille des tableaux pour éviter un dépassement
- La vérification des classes (par exemple les fonctions inutilisées, l'initialisation d'une variable ou la duplication de mémoire)
- L'utilisation des fonctions obsolètes ou remplacées conformément à l'Open Group[4]
- Vérification des exceptions de sécurité, par exemple les vérifications des utilisations d'allocation et de destruction de mémoire.
- Les fuites de mémoire, par exemple due à la perte de portée sans libération
- Les fuites de ressource, par exemple oublier de fermer un descripteur de fichier.
- L'utilisation non valide de fonctions de la Bibliothèque de modèles Standard et d'expressions idiomatiques
- Divers stylistiques et des erreurs de performance
Comme dans le cas de nombreux programmes d'analyse, il existe beaucoup de cas inhabituels d'expressions idiomatiques qui peuvent être acceptables, dans des cas particuliers ciblés, ou hors de la portée du programmeur lors de la correction du code source. Une étude menée en mars 2009, a identifié plusieurs domaines où des faux positifs ont été trouvés par Cppcheck, mais sans spécifier la version du programme examiné[5]. Cppcheck est utilisé dans des systèmes tels que le méta-anlayseur de paquet du CERN 4DSOFT[6], pour le code de vérification dans les dispositifs de détecteur de particules à haute énergie[7], le système de surveillance de radio-télescopes[8] ainsi que pour l'analyse d'erreurs dans de grands projets, tels que OpenOffice.org[9] et l'archive Debian[10].
Développement
Le projet est activement en cours de développement[11] et est maintenu dans plusieurs distributions[12],[13]. Il a déjà trouvé plusieurs bugs dans un certain nombre de projets populaires[14] comme le noyau Linux ou MPlayer[15].
Les Plugins
Intégration dans Visual Studio
Le programme commercial tiers Visual Lint de la société britannique Riverblade peut être utilisé pour intégrer CppCheck dans Visual Studio[29].
Il y a également un plugin open-source cppcheck-vs-addin[30] qui est disponible.
Il est également possible d'ajouter Cppcheck en tant qu'un outil externe[31].
Voir aussi
- Liste d'outils d'analyse statique (en)
Références
- « Cppcheck-2.8 » (consulté le )
- « Cppcheck-2.8 » (consulté le )
- « A Survey of C and C++ Software Tools for Computational Science » [archive du ], Science and Technologies Facility Council, sur Science and Technologies Facility Council, Chilbolton, Daresbury, and Rutherford Appleton Laboratories, (consulté le ), p. 14
- http://www.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap03.html
- « Static Code Analysis For Embedded Systems »
- « Dissemination and use of knowledge plan (EU Deliverable DNA2.11 »,
- « Entwurf und Implementierung eines adaptiven, strahlentoleranten eingebetteten Systems am Beispiel eines Read-Out-Controllers (En: Development and implementation of an adaptive, radiation tolerant embedded system for operation of a Read-Out controller) » [archive du ],
- « The Wettzell System Monitoring Concept and First Realizations », International VLBI Service for Geodesy & Astrometry, , p. 447
- « Hunting for vulnerabilities in large software : the OpenOffice suite »
- « Introducing the "Debian's Automated Code Analysis" (DACA) project », LWN.net
- Cppcheck on Github
- Cppcheck on Debian's Package Tracking System
- FreeBSD port
- « List of user reported bugs found by cppcheck »
- « Found Bugs list » [archive du ], SourceForge, sur SourceForge
- « SourceForge.net: cppcheck », sourceforge.net, sur sourceforge.net
- « cppcheck plugin for CLion », plugins.jetbrains.com, sur plugins.jetbrains.com
- « Cppcheclipse », github.com, sur github.com
- « Flycheck », github.com, sur github.com
- « gedit Cppcheck plugin », github.com, sur github.com
- « Cppcheck Plugin », hudson-ci.org, sur hudson-ci.org
- « Cppcheck Plugin », jenkins-ci.org, sur jenkins-ci.org
- Christoph Cullmann, « Kate Project Plugin News – Code Analysis », sur Kate | Get an Edge in Editing, (consulté le )
- Kevin Funk, « KDevelop's Cppcheck plugin merged into kdevelop.git, will be released with 5.1 », (consulté le )
- « Qt Creator Plug-in Gallery », Qt Wiki, sur Qt Wiki
- « Sublimelinter plugin », github.com, sur github.com
- « Cppcheck add-in », Visual Studio Marketplace, sur Visual Studio Marketplace
- Michael Scovetta, « Yasca »
- Riverblade, « Visual Lint homepage » (consulté le )
- VioletGiraffe, « Homepage cppcheck-vs-addin » (consulté le )
- Srix, « Simple open source static analysis tool for Visual Studio » [archive du ] (consulté le )