Domanda

Hai qualche suggerimento di strumenti per facilitare il compito di comprendere il codice C / C ++? Abbiamo appena ereditato un grosso software scritto da altri e dobbiamo rapidamente aggiornarci. Qualche consiglio su strumenti che potrebbero semplificare questo compito?

È stato utile?

Soluzione

SourceInsight e Comprendi per C ++ sono gli strumenti migliori che puoi ottenere per l'analisi del codice c / c ++ inclusi i diagrammi di flusso.

Altri suggerimenti

Il software di profilazione ti dà un'idea di quali funzioni sono state chiamate.

Se puoi usare Linux, prova KCachegrind

Personalmente, uso il debugger. Esegui il codice e vedi cosa sta facendo, e dove sta andando è l'unico modo.

Tuttavia, puoi eseguirlo attraverso alcuni generatori di documentazione che (a volte) aiutano. Un buon esempio è doxygen .

Doxygen è molto bravo a generare diagrammi da codice senza applicare markup, se attivi l'opzione EXTRACT_ALL. È necessario GraphViz per ottenere i diagrammi generati con l'impostazione HAVE_DOT. Trovo che averlo installato e lasciare DOT_PATH vuoto funzioni bene su Windows ma su OS / X continui a dover puntare direttamente alla posizione dello strumento punto.

C'è un eccellente Spelunking di codice nella coda ACM che parla di più usando doxygen e DTrace.

KScope, basato sull'utility cscope, se sei su Linux (KDE). La cosa migliore che abbia mai usato (e che uso sempre) per approfondire un enorme pezzo di codice sconosciuto che devo modificare in qualche modo o quale API devo utilizzare per le mie esigenze. Tra le sue caratteristiche ci sono il database di riferimenti incrociati, che può essere cercato in molti modi: puoi trovare tutti i riferimenti di un simbolo, la sua definizione globale, trovare chiamanti / chiamate di una funzione e molto altro. Ha anche un IDE integrato e la possibilità di mostrare un grafico di chiamata.

Doxygen ti fornirà diagrammi di relazione di classe se usi graphviz, anche se non ti sei preparato specificatamente per esso.

Esistono alcuni strumenti come l'Egitto http://www.gson.org/egypt/egypt .html che funziona, ma solo se si corrisponde alla versione GCC prevista utilizzata per compilare il codice e la versione esatta del generatore di callgraph. Lo stesso si può dire di codeviz http://www.csn.ul.ie / ~ mel / progetti / codeviz /

L'altra opzione è valgrind usata in modalità cachegrind (genera un tipo di callgraph che puoi seguire dal programma kcachegrind.

Uso personalmente gli strumenti di debugger di Visual Studio.

Viene fornito con il " Caller Graph " caratteristica che ti permetterà di visualizzare le cose in piccole caselle. Anche il Call Stack e le solite funzioni dell'orologio sono in genere tutto ciò di cui ho bisogno

C'è anche AspectBrowser che non funziona molto bene con Eclipse 3.4.0

prova AQtime , è uno strumento di profilazione che mostra tutte le funzioni che sono state chiamate ( e il tempo impiegato), è possibile impostare i punti iniziale e finale per l'analisi. Hanno una prova di 30 giorni.

Ho usato Borland Together qualche tempo fa e ha fatto lavoro dignitoso nel generare modelli dal codice. Credo che genererà persino diagrammi di sequenza dal codice. Tieni presente che se il tuo codice è un disastro lo sarà anche il tuo modello. E come ricordo non è economico ma a volte puoi prenderne uno speciale.

Rational Quantify presenta anche un bel grafico di chiamata.

Ho provato uno strumento di nome Visustin che non è molto grande graficamente ma fa quello che dice: Flowchart from Code. http://www.aivosto.com/visustin.html

Doxygen, il bello è che ti farà sapere che brutto / buono è il tuo codice in termini di dipendenza ciclica delle classi. Quindi sarai costretto a ricodificare il tuo codice, anche se potrebbe non piacerti :-)

Slickedit è ottimo per la navigazione di grandi blocchi di codice che non conosci. La funzione tag ti consente di gestire il codice su base funzionale, senza dover gestire il file in cui si trova. (EMACS in realtà ha tag ed è altrettanto buono come Slickedit, ma con una curva di apprendimento leggermente più ripida)

Quando si arriva a un metodo, una classe o una variabile che non si capisce, è sufficiente premere il tag per passare a quel codice, guardarlo sopra, quindi tornare indietro. (quelli sono legati alle sequenze di tasti, quindi è molto veloce)

Puoi anche usare find-reference per vedere dove viene usata quella funzione / variabile.

Risparmia un sacco di tempo nel dover andare a capire in quale file si trova qualcosa.

doxygen è uno strumento gratuito di generazione di documenti (simile a Javadoc) che produrrà anche grafici di relazioni come bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top