2010-06-18 3 views
33

Je cherche un outil (de préférence, un plugin Visual Studio) qui afficherait tous les fichiers inclus dans un fichier donné et montrerait tous les fichiers inclus par ces fichiers et ainsi de suite.Comment puis-je voir facilement le graphique C/C++ #include?

+2

dupe? http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+0

Oui. Ma recherche fu m'a échoué. – CannibalSmith

+0

@JohanKotlinski, je pense que ce sujet parle juste de suivre les dépendances pas sur la façon de créer un graphique, une différence importante IMO. –

Répondre

9

Doxygen, à l'aide de Graphviz, peut le faire. Vous devez d'abord modifier un fichier de configuration. Ce ne sera pas facile la première fois que vous le ferez, mais vous n'aurez pas besoin de beaucoup de modifications par la suite.

+1

En fait, c'est simple dans la plupart des cas - soit utiliser l'interface graphique Windows de l'assistant Doxygen pour le générer, soit exécuter la commande 'doxygen -g' pour générer un 'Doxyfile' par défaut et s'assurer que vous avez les valeurs' INCLUDE_GRAPH' et 'INCLUDED_BY_GRAPH' défini sur' YES'. Vous devrez ensuite exécuter Doxygen plusieurs fois et vérifier la sortie pour modifier les paramètres. –

2

Pas dans vos préférences, mais doxygen le fait très bien.

0

http://www.codeproject.com/KB/applications/includefinder.aspx

Ce n'est pas un plug-in VS, mais peut être une entrée pour votre propre outil. Pour autant que je puisse voir qu'il lit uniquement les projets VC6, les nouveaux VS ont un format XML facile à analyser. Ce dont vous avez besoin, ce sont les chemins d'inclusion par défaut pour que l'outil puisse trouver les fichiers inclus. Vous pouvez également lui fournir une boîte de paramètres dans l'interface graphique en tant qu'entrée de l'utilisateur.

9

Pas tout à fait ce que vous voulez peut-être, mais le compilateur Visual Studio (cl.exe) a une option /showIncludes qui vous montrera une arborescence de l'inclusion lorsque vous compilez un fichier. Si vous souhaitez cette information pour un seul fichier, vous pouvez cliquer avec le bouton droit sur le fichier dans l'Explorateur de solutions, sélectionnez "Propriétés" et dans la section "Ligne de commande" ajoutez/showIncludes aux "Options supplémentaires" . (Notez que j'utilise VC++ 2005, donc cela peut être différent pour les versions plus récentes).

La sortie que vous obtenez est un peu ... compliquée, mais elle vous montre ce qui est inclus et dans quel ordre. Par ailleurs, la même fonctionnalité dans GCC et le compilateur Intel C++ (au moins mes versions) est -H.

4

Si vous utilisez Visual Studio 2010, vous pouvez utiliser le nouveau Visualization and Modelling Feature Pack de Microsoft, qui dispose d'une fonction permettant de générer un graphique d'inclusion. Ceci est seulement disponible par l'intermédiaire d'un indice de MSDN cependant.

+0

Si cela est aussi utile qu'un pack de fonctionnalités, il mérite au moins 100 upvotes. –

+0

A partir des captures d'écran, le pack de fonctions de modélisation ressemble en effet à un outil de rêve. Cependant, non seulement vous avez besoin d'un abonnement MSDN, mais aussi d'un Premium ou Ultimate Visual Studio pour pouvoir télécharger .-( – BuschnicK

+0

Et cela ne fonctionne généralement PAS pour les projets C++ –

17

En premier lieu, cinclude2dot.pl est un script perl qui analyse le code C/C++ et génère un graphe de dépendance #include en tant que fichier de points à saisir dans graphviz.

http://www.flourish.org/cinclude2dot/

Si vous ne voulez pas aller dans le sens de ce genre d'outil manuel, les mains vers le bas par le gagnant est loin à mon avis, un outil connu sous le nom « IncludeManager » de PROFACTOR.

http://www.profactor.co.uk/includemanager.php

Il y a un essai gratuit, et il est génial. C'est un plug-in pour Visual Studio qui est totalement intégré donc double-cliquez sur quelque chose ici vous emmène à l'endroit où il est inclus là-bas. Le survol de l'info-bulle vous donne toutes les informations que vous voulez, et vous permet d'explorer, de supprimer des sous-arbres entiers qui ne vous intéressent pas, d'afficher des représentations autres que des graphiques, de parcourir une liste de correspondances pour ceci et cela. , c'est merveilleux.

Si vous êtes rapide à ce sujet, vous pouvez refactoriser la structure #include d'un grand projet avant la fin du test.Même ainsi, cela ne coûte pas beaucoup, environ 35 $ par licence.

Pour ce qu'il fait, c'est à peu près parfait. Non seulement les graphiques #include mais aussi les dépendances croisées entre les projets des fichiers partagés, l'impact sur les temps de construction, les propriétés détaillées dans les grilles, parfait.

+0

IncludeManager a l'air d'être facile à faire et peu coûteux. Je vais donner un coup de feu à celui-là. – Boinst

4

Vous pouvez essayer la méthode proposée par cette Stack Overflow answer:

Il y a un C/C++ -> Paramètres projet avancé "Afficher Includes". Ce va générer l'arbre. Il correspond au commutateur du compilateur /showIncludes

Questions connexes