Outil pour visualiser le stream de code (C / C ++)

Avez-vous des suggestions d’outils pour faciliter la compréhension du code C / C ++? Nous venons d’héberger un grand logiciel écrit par d’autres et nous devons rapidement nous mettre au diapason. Des conseils sur les outils susceptibles de simplifier cette tâche?

SourceInsight et Understand for C ++ sont les meilleurs outils pour l’parsing de code c / c ++, y compris les organigrammes.

Le logiciel de profilage vous donne une idée des fonctions appelées.

Si vous pouvez utiliser Linux, essayez KCachegrind

Doxygen est très efficace pour générer des diagrammes à partir de code sans appliquer de balisage, si vous activez l’option EXTRACT_ALL. Vous devez avoir installé GraphViz pour obtenir les diagrammes générés avec le paramètre HAVE_DOT. Je trouve que de l’avoir installé et de laisser le cache DOT_PATH fonctionne correctement sous Windows, mais sous OS / X, vous devez toujours pointer directement vers l’emplacement de l’outil pointillé.

Dans ACM Queue, il existe un excellent article sur Code Spelunking, qui traite davantage de l’utilisation de Doxygen et de DTrace.

Personnellement, j’utilise le débogueur. Parcourez le code et voyez ce qu’il fait et où il va, c’est le seul moyen.

Cependant, vous pouvez l’exécuter via des générateurs de documentation qui aident (parfois). Un bon exemple est doxygen .

KScope, basé sur l’utilitaire cscope, si vous êtes sous Linux (KDE). La meilleure chose que j’ai jamais utilisée (et que j’utilise tout le temps) dans un énorme code inconnu que je dois modifier d’une manière ou d’une autre, ou quelle API je dois utiliser pour mes besoins. Parmi ses fonctionnalités figurent la firebase database de références croisées, qui peut être recherchée de différentes manières: vous pouvez trouver toutes les références d’un symbole, sa définition globale, trouver des appelants / appelés d’une fonction et bien plus encore. Il a même un IDE intégré et une capacité à afficher un graphe d’appel.

Doxygen vous donnera des diagrammes de relation de classe si vous utilisez graphviz, même si vous ne l’avez pas préparé spécifiquement.

Il y a des outils comme l’Egypte http://www.gson.org/egypt/egypt.html qui fonctionnent, mais seulement si vous correspondez à la version GCC attendue utilisée pour comstackr le code et la version exacte du générateur de graphiques. On peut en dire autant de codeviz http://www.csn.ul.ie/~mel/projects/codeviz/

Une autre option est valgrind utilisée en mode cachegrind (elle génère un type de callgraph que vous pouvez suivre depuis le programme kcachegrind).

J’utilise personnellement les outils de débogage Visual Studio.

Il est livré avec la fonction “Graphes d’appel” qui vous permettra de visualiser des éléments dans de petites boîtes. Aussi, la stack d’appels et les fonctions de surveillance habituelles sont généralement tout ce dont j’ai besoin.

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 appelées (et le temps qu’il a fallu), vous pouvez définir les points de début et de fin pour l’parsing. Ils ont un essai de 30 jours.

J’ai utilisé Borland Together il y a quelque temps et cela a permis de générer des modèles à partir du code. Je crois que cela va même générer des diagrammes de séquence à partir du code. Gardez à l’esprit que si votre code est un gâchis, votre modèle le sera aussi. Et comme je me souviens, ce n’est pas bon marché mais parfois, vous pouvez attraper une spéciale.

Rational Quantify présente également un agréable graphique d’appel.

J’ai essayé un outil nommé Visustin qui n’est pas très performant graphiquement, mais fait ce qu’il dit: Organigramme à partir du code. http://www.aivosto.com/visustin.html

Doxygen est un outil gratuit de génération de doc (similaire à Javadoc) qui produira également des graphes de relation.

Doxygen, la bonne chose à ce sujet, c’est que cela vous permettra de savoir si le code est en termes de dépendance cyclique des classes. Donc, vous serez obligé de re-factoriser votre code, même si vous ne l’aimez pas 🙂

Slickedit est idéal pour naviguer dans de gros blocs de code que vous ne connaissez pas. La fonctionnalité de tags vous permet de gérer le code de manière fonctionnelle, sans avoir à gérer le fichier dans lequel il se trouve.

Lorsque vous parvenez à une méthode, à une classe ou à une variable que vous ne comprenez pas, il vous suffit de pousser les balises pour accéder à ce code, puis de le rechercher et de le repositionner. (ceux-ci sont liés aux frappes, donc c’est très rapide)

Vous pouvez également utiliser les références à la recherche pour voir où cette fonction / variable est utilisée.

Économise des tonnes de temps sur la nécessité d’aller chercher quel fichier contient quelque chose.