Vous avez d'un côté le code de l'autre l'outil d'analyse statique. Celui-ci, au regard d'une liste de recettes définies au préalable, va analyser le code afin de vérifier que vous avez respecté l'ensemble de ces "bonnes recettes".
Voici des exemples de recettes à respecter dans les langages C/C++/Objective-C :
- Improper Restriction of Operations within the bounds of a Memory Buffer
- Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)
- Out-of-bounds Read
- Improper Validation of Array Index
- Incorrect Calculation of Buffer Size
- Uncontrolled Format String
Donc si vous n'avez pas toute la confiance souhaitée dans un projet logiciel, il peut s'avérer utile de passer le code à la moulinette d'un outil d'analyse statique pour faire un état des lieux le plus précis possible. On pourrait dire que c'est du "reverse engineering" mais en reverse il est très tard pour se rendre compte de la mauvaise qualité d'un logiciel.
Outils d'analyse statique
Liste des outils d'analyse statique |
Comparaison des outils d'analyse statique
Coverity
On aura accès à la liste des recettes appliquées par l'outil d'analyse, par exemple en C/C++ et Objective-C.
Pour le reste il ne vous reste plus qu'à appeler :
Ce n'est pas très engageant !
Et sinon enregistrez vous pour un essai ...
SonarQube
On dirait plutôt un "all in one" plutôt qu'un outil purement d'analyse statique de code source.SonarQube - All in One |
SonarQube Plugin C/C++ à 7000 $ |
SonarQube Analyse Static - Apache HTTP Server en langage C - Bash - Git - PHP |
No Vulnerabilities
At least one blocker bug
Code Smells : ça sent bon le code ? mdr.
Cliquons sur Bugs pour voir :
Quel joli graphique, en fait l'état du logiciel Git est affiché là ouvert au publique. C'est incroyable la transparence de nos jours.
1 127 Bugs
205 New Bugs
Cppcheck
[test.cpp:4]: (error) Uninitialized variable: p
Out of bounds checking
Memory leaks checking
Detect possible null pointer dereferences
Check for uninitialized variables
Check for invalid usage of STL
Checking exception safety
Warn if obsolete or unsafe functions are used
Warn about unused or redundant code
Detect various suspicious code indicating bugs
…
List of all checks
Plugin for Visual Studio
Conclusion
Alors aimez-nous, sinon ... champignon !