Avez-vous des suggestions d'outils pour faciliter la compréhension du code C/C++? Nous venons d'hériter d'un gros logiciel écrit par d'autres et nous devons nous mettre rapidement à jour. Des conseils sur les outils qui pourraient simplifier cette tâche?
SourceInsight et Comprendre pour C++ sont les meilleurs outils que vous pouvez obtenir pour l'analyse de code c/c ++, y compris les organigrammes.
Le logiciel de profilage vous donne une idée des fonctions qui ont été appelées.
Si vous pouvez utiliser Linux, essayez KCachegrind
Personnellement, j'utilise le débogueur. Parcourez le code et voyez ce qu'il fait et où il va est le seul moyen.
Cependant, vous pouvez l'exécuter via des générateurs de documentation qui (parfois) vous aident. Un bon exemple est doxygen .
Doxygen est très bon pour générer des diagrammes à partir de code sans appliquer de balisage, si vous activez l'option EXTRACT_ALL. Vous avez besoin de GraphViz installé pour obtenir des diagrammes générés avec le paramètre HAVE_DOT. Je trouve l'avoir installé et laisser le vide DOT_PATH fonctionne très bien sur Windows mais sur OS/X, je dois continuer à pointer directement vers l'emplacement de l'outil dot.
Il y a un excellent article Code Spelunking dans ACM Queue qui parle plus de l'utilisation de doxygen et DTrace.
KScope, construit sur l'utilitaire cscope, si vous êtes sous Linux (KDE). La meilleure chose que j'aie jamais utilisée (et que j'utilise tout le temps) pour extraire un énorme morceau de code inconnu que je dois modifier en quelque sorte ou quelle API je dois utiliser pour mes besoins. Parmi ses fonctionnalités, citons la base de données de références croisées, qui peut être recherchée de nombreuses manières: vous pouvez trouver toutes les références d'un symbole, sa définition globale, trouver les appelants/appelants d'une fonction et bien plus encore. Il a même un IDE IDE intégré et une capacité d'afficher un call-graph.
Doxygen vous donnera des diagrammes de relations de classe si vous utilisez graphviz, même si vous ne vous y êtes pas spécifiquement préparé.
Il existe des outils comme l'Egypte http://www.gson.org/egypt/egypt.html qui fonctionnent, mais uniquement si vous correspondez à la version GCC attendue utilisée pour compiler le code et la version exacte de le générateur de callgraph. La même chose peut être dite à propos de codeviz http://www.csn.ul.ie/~mel/projects/codeviz/
L'autre option est valgrind utilisé en mode cachegrind (il génère un type de callgraph que vous pouvez suivre à partir du programme kcachegrind.
J'ai utilisé Borland Together il y a quelque temps et il a fait un travail décent de génération de modèles à partir de code. Je crois que cela générera même des diagrammes de séquence à partir du code. Gardez à l'esprit que si votre code est en désordre, votre modèle le sera également. Et si je me souviens bien ce n'est pas bon marché mais parfois vous pouvez en attraper un spécial.
Il y a aussi AspectBrowser qui ne fonctionne pas très bien avec Eclipse 3.4.0
essayez AQtime , c'est un outil de profilage qui affiche toutes les fonctions qui ont été appelées (et le temps qu'il a fallu), vous pouvez définir les points de début et de fin de l'analyse. Ils ont un essai de 30 jours.
j'ai essayé un outil nommé Visustin qui n'est pas très bon graphiquement mais fait ce qu'il dit: Organigramme du code. http://www.aivosto.com/visustin.html
Rational Quantify présente également un graphique d'appel Nice.
doxygen est un outil de génération de documents gratuit (similaire à Javadoc) qui produira également des graphiques de relations.
Doxygen, la bonne chose à ce sujet est qu'il vous permettra de savoir hoe laid/bon est votre code en termes de dépendance cyclique des classes. Vous serez donc obligé de re-factoriser votre code, même si vous ne l'aimez peut-être pas :-)
Slickedit est idéal pour parcourir de gros blocs de code que vous ne connaissez pas. La fonctionnalité de balises vous permet de gérer le code sur une base fonctionnelle, sans avoir à gérer le fichier dans lequel il se trouve. (EMACS a en fait des balises et est tout aussi bon que Slickedit, mais avec une courbe d'apprentissage légèrement plus raide)
Lorsque vous arrivez à une méthode ou une classe ou une variable que vous ne comprenez pas, il vous suffit de pousser la balise pour accéder à ce code, de la parcourir, puis de revenir en arrière. (ceux-ci sont liés aux touches, c'est donc très rapide)
Vous pouvez également utiliser des références de recherche pour voir où cette fonction/variable est utilisée.
Économise des tonnes de temps sur le fait de devoir chercher dans quel fichier quelque chose se trouve.