2010-06-18 17 views
33

Sto cercando uno strumento (preferibilmente un plug-in di Visual Studio) che visualizzi tutti i file inclusi da un determinato file e mostri tutti i file inclusi da tali file e così via.Come posso vedere facilmente il grafico di inclusione C/C++?

+2

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

+0

Sì. La mia ricerca fu mi ha fallito. – CannibalSmith

+0

@JohanKotlinski, penso che l'argomento parli solo del tracciamento delle dipendenze non su come creare un grafico, un'importante differenza IMO. –

risposta

9

Doxygen, con l'aiuto di Graphviz, può farlo. È necessario prima modificare un file di configurazione. Non sarà facile la prima volta che lo fai, ma non è necessario apportare molte modifiche in seguito.

+1

In realtà, nella maggior parte dei casi è semplice: utilizzare la GUI di Windows del Doxygen Wizard per generarlo, oppure dalla riga di comando eseguire 'doxygen -g' per generare un' Doxyfile' predefinito quindi assicurarsi di avere i valori 'INCLUDE_GRAPH' e 'INCLUDED_BY_GRAPH' impostato su' YES'. Potrebbe quindi essere necessario eseguire Doxygen un paio di volte e controllare l'output per modificare i parametri. –

2

Non nelle tue preferenze, ma doxygen lo fa abbastanza bene.

0

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

Questa non è una VS plug-in, ma può essere un antipasto per il proprio strumento. Per quanto ho potuto vedere, legge solo i progetti VC6, i nuovi VS hanno un formato XML facile da analizzare. Ciò di cui hai bisogno sono i percorsi di inclusione predefiniti in modo che lo strumento possa trovare i file inclusi. In alternativa è possibile fornire una finestra di impostazioni nella GUI come input dell'utente.

9

Non proprio quello che vuoi forse, ma il compilatore di Visual Studio (cl.exe) ha un'opzione /showIncludes che ti mostrerà un albero degli include quando compili un file.

Se si desidera ottenere queste informazioni per un singolo file, è possibile fare clic con il pulsante destro del mouse sul Solution Explorer, selezionare "Proprietà" e nella sezione "Riga di comando" aggiungere/mostrareInclude alle "Opzioni aggiuntive" . (Nota Sto usando VC++ 2005, quindi potrebbe essere diverso per le versioni più recenti).

L'output che si ottiene è un po '... contorto, ma mostra ciò che viene incluso e in quale ordine.

Per inciso, la stessa funzionalità in GCC e nel compilatore Intel C++ (almeno le mie versioni) è -H.

4

Se si utilizza Visual Studio 2010, è possibile utilizzare il nuovo Visualization and Modelling Feature Pack di Microsoft, che ha una funzione per generare un grafico di inclusione. Questo è disponibile solo tramite un indice MSDN.

+0

Se questo è utile come feature pack come sembra, questo post merita almeno 100 uptotes. –

+0

Dagli screenshot il feature pack di modellazione sembra davvero uno strumento da sogno. Tuttavia, non è necessario solo un abbonamento MSDN ma anche un Premium o Ultimate Visual Studio per qualificarsi per il download ;-( – BuschnicK

+0

E generalmente non funziona per i progetti C++. –

17

Primo, cinclude2dot.pl è uno script perl che analizza il codice C/C++ e produce un grafico di dipendenza #include come file punto per l'immissione in graphviz.

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

Se non si vuole fare la fine di quella sorta di strumento manuale, quindi il mani verso il basso dal vincitore gran lunga è a mio parere uno strumento noto come "IncludeManager" dal Profactor.

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

C'è una prova gratuita, ed è impressionante. È un plug-in per Visual Studio completamente integrato, quindi fare doppio clic su qualcosa da qui ti porta al punto in cui è incluso laggiù.

I mouseover del tooltip ti forniscono tutte le informazioni che desideri e ti consentono di eseguire il drill down, rimuovere interi sotto-canali che non ti interessano, visualizzare rappresentazioni diverse dai grafici, scorrere un elenco di corrispondenze per questo e quello , è meraviglioso.

Se sei veloce, puoi rifattorizzare la struttura #include di un grande progetto prima che scada il processo.Anche così, non costa molto, circa $ 35 per licenza.

Per quello che fa, è quasi perfetto. #include non solo grafici ma anche cross-dipendenze tra progetti di file condivisi, impatto sui tempi di costruzione, proprietà dettagliate nelle griglie, perfetto.

+0

IncludeManager sembra che funzioni facilmente ed è poco costoso. Darò a quello un colpo. – Boinst

4

È possibile provare il metodo suggerito da questo Stack Overflow answer:

C'è un C/C++ - impostazione> progetto Avanzate "mostra comprende". Che genererà l'albero. Si associa all'interruttore del compilatore /showIncludes

Problemi correlati