Question

Java dispose d'excellents 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 gratuitement .

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 difficile d’obtenir une version d’essai.

L’alternative consiste à rechercher des outils d’analyse statique 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é chose facile.

Vous trouverez ci-dessous une courte liste d'outils d'analyse statique C ++ trouvés ou suggérés par d'autres.

Quels sont certains autres outils d'analyse statiques C ++ open source portables que tout le monde connaît et qui peuvent être recommandés?

Quelques liens connexes.

Était-ce utile?

La solution

Oink est un outil construit au-dessus du serveur Elsa C ++. Le porc de Mozilla est une fourchette d'Elsa / Oink.

Voir: http://danielwilkerson.com/oink/index.html

Autres conseils

CppCheck est open source et multiplateforme.

Mac OSX:

brew install cppcheck

En ce qui concerne le compilateur GNU, gcc a déjà une option intégrée qui permet d'ajouter des avertissements à ceux de -Wall. L'option est -Weffc ++ et concerne les violations de certaines directives de Scott Meyers publiées dans ses livres "C < efficaces et plus efficaces C ++ ". .

En particulier, l'option détecte les éléments suivants:

  • Définissez un constructeur de copie et un opérateur d'affectation pour les classes à mémoire allouée dynamiquement.
  • Préférez l'initialisation à l'affectation dans les constructeurs.
  • Rendre les destructeurs virtuels dans les classes de base.
  • Avez " operator = " renvoie une référence à * this.
  • N'essayez pas de renvoyer une référence lorsque vous devez renvoyer un objet.
  • Faites la distinction entre les formes préfixées et postfixées des opérateurs d'incrémentation et de décrémentation.
  • Ne jamais surcharger "& amp; & amp;", "||", ou ",".

En développement pour le moment, mais clang effectue une analyse en C et est conçu pour gérer le C ++ sur temps. Cela fait partie du projet LLVM .

Mise à jour : la page d'arrivée indique: "L'analyseur est un travail en cours continu", il l'est néanmoins documenté en tant qu’analyseur statique pour C et C ++.

Question: Comment puis-je exécuter GCC / Clang pour l'analyse statique? (avertissements uniquement)

Option du compilateur: -fsyntax-only

Quelqu'un a mentionné -Weffc ++, mais c’est l’un des seuls avertissements GCC que je n’allume 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 consulter la liste complète des avertissements recommandés .

En résumé:

  

-pedantic -Wall -Wextra -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-virtuel -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-inutilisé

Notez que certains d'entre eux nécessitent une nouvelle version de gcc. Vous devrez peut-être les supprimer 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" Analyse de code statique ".

Si vous utilisiez Open Source, vous vouliez vraiment dire "gratuitement", alors le de Noreferrer"> prefast est une bonne analyse. Bien sur Windows uniquement. Il est entièrement intégré à Visual Studio & amp; le compilateur. par exemple:

cl /analyze Sample.cpp

Le travail d'analyse statique de Mozilla mérite probablement un coup d'oeil.

Splint semble remplir la facture pour C.

Si vous n'avez pas spécifié d'open source, je dirais que le logiciel Gimpel est 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 OSX:

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é qu'avec le code du pilote mais ceci (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?

Nous travaillons sur un plug-in Eclipse CDT appelé métriculator. Il est toujours en cours de développement, mais certaines mesures importantes (LSLOC, McCabe, EfferentCoupling, par exemple) sont déjà implémentées.

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 peut être installée via le site de mise à jour à l'adresse suivante: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Description supplémentaire

Metriculator analyse statiquement le code source C ++ et génère des métriques logicielles. Les métriques sont implémentées comme Vérificateurs Codan. Les résultats de l'analyse peuvent être explorés dans une vue séparée. Chaque La métrique a des propriétés configurables (par exemple, un seuil pour le nombre maximal de lignes de code par mot). une fonction'). Dépasser ce seuil signale un problème et crée un marqueur dans l'éditeur de code source.

avec métriculateur, vous pouvez:

  • analyser les fichiers / dossiers / projets C ++
  • définir les seuils de mesures et activer / désactiver les mesures à l'aide de la page de préférences Codans
  • des marqueurs de problèmes dans les éditeurs de code source
  • explorer les résultats métriques
  • exportez les résultats des mesures sous forme de nuage de tags (disponible en option sur le site de mise à jour)

Actuellement, le métriculateur est fourni avec les mesures suivantes:

  • McCabe (Complexité cyclomatique)
  • EfferentCoupling par type
  • Lignes de code source logiques
  • Nombre de membres par type
  • Nombre de paramètres par fonction

Vous devriez essayer oo-browser il a une intégration géniale avec xemacs

On peut également coder des extensions de GCC dans MELT (langage spécifique à un domaine conçu pour étendre GCC) ou GCC plugins en C (beaucoup plus difficile) d'effectuer des analyses personnalisées.

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 cherchez, mais je les ai trouvées utiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top