2012-01-19 7 views
5

Qualcuno conosce uno strumento che è in grado di creare "diagrammi funzione" dal codice ansi c?Schema a blocchi funzione di creazione automatica da codice ansi c

Per "diagramma di funzione" intendo un grafico che rappresenta una panoramica dei file, delle funzioni e delle loro relazioni. Immagino che sia qualcosa come un diagramma di circut.

Es. se abbia il seguente codice:

//MyProgram.c 
int main(int argc, char** argv) 
{ 
    Foo(); 
    Bar(); 
    return 0; 
} 

//Slave.h 
void Foo(); 
void Bar(); 

Il grafico sarebbe qualcosa di simile alla seguente immagine:

Function relation diagram http://i44.tinypic.com/503z7q.png

lo fa ha un nome ufficiale? Diagramma di dipendenza, forse?

Ho guardato un po 'Doxygen. Ma questo chiaramente afferma che: Doxygen ha il supporto integrato per generare diagrammi di ereditarietà per le classi C++. Stessa cosa con molti strumenti UML. Non ho lezioni. Anche se i miei file c potrebbero avvicinarsi.

+0

Forse dovrei aggiungere che il mio scopo con il diagramma è di presentare una panoramica di un dato progetto di codice. Una mano utile nel "trovare il posto giusto dove guardare, nel codice". Il raggruppamento di file e librerie è quindi importante. E i rapporti di funzione daranno il contenuto reale. Forse conosci un diagramma migliore? Qualcosa di file/lib basato? – Illishar

+0

Il "grafico delle dipendenze" qui: http://msdn.microsoft.com/en-us/library/ff657798.aspx, in realtà sembra abbastanza buono. Manca solo i rapporti di funzione. – Illishar

+0

doxygen è in grado di estrarre tutti i tipi di grafici, non solo i diagrammi di ereditarietà. –

risposta

5

Quello che viene chiamato si chiama Call Graph.

C'è un elenco di strumenti per generarli: http://en.wikipedia.org/wiki/Call_graph#Software

+0

La maggior parte dei grafici delle chiamate che ho visto, mette tutte le funzioni in un unico grande bucket e quindi genera un albero (se fortunato). Sono molto gentili quando fanno il profiling. In questo caso, sono più interessato alla relazione tra i file, rispetto alla sequenza del grafo delle chiamate. UML sarebbe un colpo migliore credo. Ma forse hai in mente un programma specifico? – Illishar

+0

Attualmente la maggior parte degli IDE supportano i grafici delle chiamate in questi giorni. – dicaprio

+0

Ho esaminato l'elenco e non riesco a trovarne uno che sia in grado di creare un "file di chiamate ordinato per file". Sono solo alberi con la funzione di chiamata principale come nodo superiore. (E non sono affatto alla ricerca di alberi.) – Illishar

3

Ci paio di software che non sono più libero es www.scitools.com che ha uno strumento chiamato Understand C. Questo sono sicuro che farà ciò che stai cercando, ci sono altri strumenti come BOUML (questo è uno strumento gratuito). Oltre a questo l'elenco fornito da qiao è un buon riferimento.

+0

BOUML è per C++ – Illishar

+0

scitool ha alcuni grafici interessanti. Il loro grafico delle dipendenze è vicino: http://www.scitools.com/images/features/dependenciesGraph.png. Ancora non mostra relazioni di funzione e certamente non offre una panoramica. Chiunque guardi questi scapperà via a screemare. (Una questione di gusto e complessità forse.) – Illishar

+0

vero, ma fa ancora quello che ti serve. Presumo che tu non voglia generare o rigenerare il codice. – dicaprio

0

Penso di aver trovato l'origine della mia idea. La visualizzazione del codice come "componenti con input/output connessi" è un concetto di LabVIEW. (Non sono un pazzo completo per cercare questo tipo di diagramma allora;)

Tuttavia, per quanto ne so, LabVIEW non fa quello che voglio. LabVIEW è per la creazione e il collegamento delle funzionalità. Ampiamente usato da persone hw/fw. (Che sono anche i miei destinatari.) Non inversiderà il codice nei diagrammi.

Strano che questi diagrammi non esistano realmente. Mi sembra che persone come programmatori embedded, ansi c, basso livello, hw, ecc. Li amerebbero.

Problemi correlati