Java possède 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 sont gratuits .
Des produits commerciaux d'analyse statique C ++ sont disponibles. Bien que de tels produits soient excellents, le coût est bien trop élevé pour les étudiants et il est généralement assez difficile d'obtenir une version d'essai.
L'alternative consiste à trouver des outils d'analyse statique C ++ open source qui s'exécuteront sur 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.
- C ++ Check http://sf.net/projects/cppcheck/
- Oink http://danielwilkerson.com/oink/index.html
- Compteur de code C et C ++ http://sourceforge.net/projects/cccc/
- Attelle (à partir des réponses)
- Porc de Mozilla (à partir des réponses) (Cela fait maintenant partie d'Oink)
- Dehydra de Mozilla (à partir des réponses)
- Utiliser l'option
-Weffc++
pour GNU g ++ (à partir des réponses)
Quels sont les autres outils portables d'analyse statique C ++ open source que tout le monde connaît et qui peuvent être recommandés?
Quelques liens connexes.
- /programming/97454/c-static-code-analysis-tool-on-windows
- http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
- http://www.chris-lott.org/resources/cmetrics/
- Un outil gratuit pour comparer le code source C / C ++ avec un ensemble de normes de codage?
- http://spinroot.com/static/
- Choisir un outil d'analyse de code statique
la source
Réponses:
Oink est un outil construit au-dessus du frontal Elsa C ++. Le porc de Mozilla est un fork d'Elsa / Oink.
Voir: http://danielwilkerson.com/oink/index.html
la source
CppCheck est open source et multiplateforme.
Mac OS X:
la source
choco install cppcheck
Concernant le compilateur GNU, gcc a déjà une option intégrée qui permet d' avertir davantage ceux de -Wall. L'option est -Weffc ++ et il s'agit des violations de certaines directives de Scott Meyers publiées dans ses livres " C ++ efficace et plus efficace ".
En particulier, l'option détecte les éléments suivants:
la source
-Weffc++
met en garde contre des tonnes de constructions qui sont parfaitement bien dans une grande base de code. J'appuie cependant la suggestion de-Wextra
; ne partez pas sans lui!En cours de développement pour l'instant, mais clang fait une analyse C et vise à gérer C ++ au fil du temps. Cela fait partie du projet LLVM .
Mise à jour : Bien que la page de destination indique "L'analyseur est un travail continu en cours", il est néanmoins maintenant documenté comme un 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
la source
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 la liste complète des avertissements recommandés .
En résumé:
Notez que certains d'entre eux nécessitent une nouvelle version de gcc, vous devrez donc peut-être les éliminer de votre liste si vous êtes bloqué sur 4.5 ou quelque chose.
la source
John Carmack mentionne également PVS-Studio dans cet article de blog intéressant sur "Static Code Analysis" .
la source
Si par Open Source, vous vouliez vraiment dire "gratuit", alors l' analyse de pré - production de Microsoft est bonne. Bien sûr Windows uniquement. Il est entièrement intégré dans Visual Studio et le compilateur. par exemple:
la source
Le travail d'analyse statique de Mozilla mérite probablement un coup d'œil.
la source
Éclisse semble remplir la facture pour C.
Si vous ne spécifiez pas open source , je dirais que Gimpel logiciel de PCLint est probablement l' un des meilleurs outils disponibles pour la vérification statique de code en C ++. Mais, bien sûr, ce n'est pas open source.
Mac OS X:
la source
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 doit être exécuté qu'avec le code du pilote, mais cet (ancien) article de blog décrit les étapes à suivre pour l'exécuter. Peut-être peut-il être intégré dans un processus de construction normal?
la source
Nous travaillons sur un plug-in Eclipse CDT appelé métriculateur. Il est toujours en cours de développement mais certaines mesures importantes (par exemple LSLOC, McCabe, EfferentCoupling) sont déjà implémentées.
Voir http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation pour plus de détails comme 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 : http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/
Description supplémentaire
Le métriculateur 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 distincte. Chaque métrique a des propriétés configurables (par exemple, un seuil pour «max 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 livré avec les métriques suivantes:
la source
Vous devriez essayer oo-browser, il a une intégration impressionnante avec xemacs
la source
On peut également coder des extensions de GCC en MELT (un langage spécifique au domaine conçu pour étendre GCC) ou des plugins GCC en C (beaucoup plus difficile) pour faire une analyse personnalisée.
la source
Doxygen effectue une certaine analyse du flux de contrôle et génère des graphiques. Ce n'est peut-être pas ce que vous cherchez, mais je les ai trouvés utiles à examiner.
la source