9
votes

Visualisation CODE C ++

une sorte de suivi / question connexe à Ce .

J'essaie d'obtenir une prise en main sur une grande base de code qui a des centaines et des centaines de classes et une grande hiérarchie de héritage. Je veux pouvoir voir les "veines principales" de la hiérarchie d'héritage en un coup d'œil - toutes les classes "périphériques" qui font seulement une chose très spécifique / spécialisée. Le "diagramme de la classe de visual" de Visual Studio fait quelque chose qui ressemble à un train et à ses étendues horizontalement sur l'écran et n'est pas très organisé. Vous ne pouvez pas le gaver facilement.

Je viens d'essayer DOXYGEN et GRAPHVIZ, mais les résultats sont .. un peu similaire au studio visuel. Je reçois des graphiques d'appel sucrés mais encore trop de détails pour ce que j'essaie d'obtenir.

J'ai besoin d'un moyen rapide de générer la hiérarchie d'héritage, dans une sorte de pliable vue.


0 commentaires

9 Réponses :


5
votes

Un bon outil UML devrait faire le tour.

Voici une liste des outils génériques UML: http://fr.wikipedia.org/wiki/list_of_uml_tools

Il y a beaucoup de choses là-bas, tous avec des ensembles de fonctionnalités variables. Essayez de jouer avec quelques-uns pour voir si vous obtenez la sortie que vous désirez. S'ils sont libres de vous échouer, vous devrez peut-être vous débarrasser d'un bon outil de qualité commerciale


0 commentaires

6
votes

Pourquoi ne pas le faire manuellement, c'est une excellente expérience d'apprentissage lorsque vous commencez à travailler avec une grande base de code. Je regarde généralement simplement quelle classe hérite de quoi et quelle classe contient les instances, les références ou les pointeurs vers d'autres classes. Avoir un morceau de papier à côté de vous et obtenez des dessins ...


1 commentaires

J'ai effectivement fini par prendre le diagramme de train et l'examiner. Ensuite, j'ai dessiné un nouveau diagramme. Une expérience enrichissante!



4
votes

Vous pouvez essayer CPPDepend , il ne crée pas une hiérarchie de classe comme Doxygen, mais elle peut montrer "La grande image" pour votre projet, il affiche également des métriques de code.


0 commentaires

2
votes

Essayez Insight Source Il est possible de configurer la profondeur du graphique généré dans cet outil.

Voir aussi utilitaire de graphique C / C ++ pour la plate-forme Windows


0 commentaires

5
votes

Au lieu d'entrer dans l'outil de concepteur de classe complète, utilisez simplement la "vue de la classe" ou "Navigateur d'objet" dans Visual Studio - ils présentent des héritiromies de classe entièrement pliables.


0 commentaires

0
votes

Quelle est votre définition de la "veine principale"? Vous voulez soit un réducteur de graphique ou un squelette (vous pouvez trouver ou écrire un et l'appliquer à ce que Doxygen et le repos produisent) ou, «la veine principale» a quelque chose à voir avec la fonction du code et, je ne pense pas un L'outil automatisé peut vous aider avec cela. À moins que vous ne puissiez signaler à cela, ce sont les importants morceaux qui apportent et ne produisent que des éléments qui ne sont qu'un ou deux étages des chemins entre ceux-ci ». Bourdon, sonne comme un outil cool pour écrire :)

... la hiérarchie de l'héritage, dans une sorte de vue pliable.

Encore une fois, une idée douce pour un outil!


0 commentaires

2
votes

Consultez Sourcenavigator , c'est une source ouverte, fonctionne sur une bande de plates-formes et a un navigateur de hiérarchie, Un navigateur de classe, un navigateur croisé et plus qui vous permettra de naviguer et de comprendre le code.

Je l'utilise depuis un certain temps, surtout surtout lorsque j'ai un nouveau code pour passer et comprendre.


0 commentaires

3
votes

J'ai eu le plus de succès avec Valgrind et Kcachegrind pour faire cela. Vous exécutez Valgrind contre votre binaire de débogage, effectuez toutes les actions que vous êtes intéressé, puis importer la sortie en kcachegrind pour voir tout ce que vous voudriez jamais savoir qui a appelé ce que, à quelle fréquence, et quand. De plus, parce que vous le faites de manière dynamique, il attrape des cas que l'analyse statique ne sera probablement pas.

J'ai également eu un certain succès en utilisant les fonctionnalités inverse de l'ingénierie d'entreprise d'Enterprise Architect, bien que cela ne finisse pas presque aussi bien (mais vous obtenez un modèle UML fonctionnel qui est agréable!).

Et enfin, un outil appelé "Comprendre". C'est plutôt bien à l'analyse statique OO, mais je pense que très cher et pas si largement utilisé.


0 commentaires

2
votes

Pour un produit commercial à prix raisonnable, vous voudrez peut-être consulter SolidSX de VIZLOGIX (www.vizlogix.com). (Si vous êtes en dehors de l'Amérique du Nord, allez à SolidSource - www.solidsourceit.com.)

Il génère un diagramme radial pouvant être effondré et élargi. Il s'intègre également à Visual Studio (BSC et .NET).


0 commentaires