Java dispose de très bons outils d'analyse statique open source tels que FindBugs , Checkstyle et PMD . Ces outils sont faciles à utiliser, très utiles, fonctionnent sur plusieurs systèmes d'exploitation et free.
Des produits d'analyse statique C++ commerciaux sont disponibles. Bien que de tels produits soient intéressants, leur coût est bien trop élevé pour les étudiants et il est généralement assez difficile d’obtenir une version d’essai.
L’autre solution consiste à rechercher des outils d’analyse statiques C++ open source s’appliquant à plusieurs plates-formes (Windows et Unix). En utilisant un outil open source, il pourrait être modifié pour répondre à certains besoins. Trouver les outils n'a pas été une tâche facile.
Vous trouverez ci-dessous une courte liste d'outils d'analyse statique C++ trouvés ou suggérés par d'autres.
-Weffc++
pour GNU g ++ (à partir des réponses)Quels sont certains autres outils d'analyse statiques C++ open source portables que tout le monde connaît et que l'on peut recommander?
Quelques liens connexes.
Oink est un outil construit sur le frontal Elsa C++. Le porc de Mozilla est une fourchette d'Elsa/Oink.
Concernant le compilateur GNU, gcc a déjà une option intégrée qui permet d’avertir l’avertissement en plus de ceux de -Wall. L’option est - Weffc ++ et concerne les violations de certaines directives de Scott Meyers publiées dans ses livres " Efficace et plus efficace C++ ".
En particulier, l'option détecte les éléments suivants:
En cours de développement pour l'instant, mais clang effectue une analyse en C et est conçu pour gérer le C++ au fil du temps. Cela fait partie du projet LLVM .
Mise à jour : Alors que la page d'arrivée indique "L'analyseur est un travail en cours continu", il est néanmoins maintenant documenté en tant qu’analyseur statique pour C et C++.
Question: Comment puis-je exécuter GCC/Clang pour une analyse statique? (Avertissements uniquement)
Option du compilateur: -fsyntax-only
Quelqu'un d'autre a mentionné -Weffc ++, mais c'est en fait l'un des seuls avertissements GCC que je n'active pas par défaut. Cependant, l'ensemble des avertissements que j'active est l'outil d'analyse statique le plus important de mon kit. Vous pouvez voir le liste complète des avertissements recommandés .
En résumé:
-pedantic -Wall -Wext -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimisation -Wformat = 2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-non utilisé
Notez que certains d'entre eux nécessitent une nouvelle version de gcc, vous devrez peut-être les éliminer de votre liste si vous êtes bloqué par la version 4.5 ou quelque chose du genre.
John Carmack mentionne également PVS-Studio dans cet intéressant billet de blog sur "Static Code Analysis" .
Si par Open Source, vous vouliez vraiment dire "gratuit", alors l'analyse de prefast de Microsoft est bonne. Bien sur Windows uniquement. Il est entièrement intégré à Visual Studio et au compilateur. par exemple.:
cl /analyze Sample.cpp
Le travail d'analyse statique de Mozilla vaut probablement le détour.
Splint semble remplir la note pour C.
Si vous n'avez pas spécifié d'open source, je dirais que Gimpel Software 's PCLint est probablement l'un des meilleurs outils disponibles pour la vérification de code statique en C++. Mais bien sûr, ce n'est pas open source.
Mac OS X:
brew install splint
Le PREFast de Microsoft est également disponible dans le Kit de pilotes Windows. La version 7.0 est téléchargeable ici .
Les documents Microsoft indiquent qu’il ne devrait être exécuté que sur le code du pilote, mais que cet (ancien) article de blog indique les étapes à suivre pour l’exécuter. Peut-être peut-il être intégré dans un processus de construction normal?
Nous avons travaillé sur un plug-in Eclipse CDT appelé métriculator. Il est toujours en cours de développement, mais certains paramètres importants (par exemple, LSLOC, McCabe, EfferentCoupling) sont déjà implémentés.
Voir http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation pour plus de détails tels que la démonstration vidéo et la documentation.
La dernière version nocturne est disponible pour l’installation via le site de mise à jour à l’adresse suivante: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/
Description complémentaire
Metriculator analyse statiquement le code source C++ et génère des métriques logicielles. Les métriques sont implémentées en tant que vérificateurs Codan. Les résultats de l'analyse peuvent être explorés dans une vue séparée. Chaque métrique a des propriétés configurables (par exemple, un seuil pour le nombre maximal de lignes de code par fonction). Le dépassement de ce seuil signale un problème et crée un marqueur dans l'éditeur de code source.
avec métriculateur, vous pouvez:
Actuellement, le métriculateur est fourni avec les métriques suivantes:
On peut aussi coder des extensions de GCC dans MELT (un langage propre à un domaine conçu pour étendre GCC) ou des plugins GCC en C (beaucoup plus difficile) pour effectuer une analyse personnalisée .
Vous devriez essayer oo-browser, il a une intégration géniale avec xemacs
Doxygen effectue des analyses de flux de contrôle et génère des graphiques. Celles-ci ne sont peut-être pas ce que vous recherchez, mais je les ai trouvées utiles à examiner.