2014-12-05 49 views
5

È necessario automaticamente costruire diagrammi di flusso con codice C++, idealmente un diagramma di flusso per file di origine. C'è qualche strumento (preferibilmente C++/Python e open-source o altamente configurabile - quindi posso cambiare l'aspetto) che posso usare per creare diagrammi di flusso?Generazione automatica di diagrammi di flusso dal codice C++

http://www.faqs.org/patents/img/20110088010_08.png

+1

Sono a conoscenza di Enterprise Architect http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/execution_analyzer/generating_sequence_diagram.html in grado di generare diagrammi di sequenza in background mentre si esegue il debug del codice. Una volta terminato il debug, ti viene chiesto di salvare il diagramma generato. Tutte le funzioni in cui sono stati impostati i breakpoint e quelli effettivamente colpiti durante la sessione di debug sono trattati nel diagramma di sequenza generato. – user1

+0

Quindi EA fornisce un'analisi * dinamica *, non un'analisi statica. –

risposta

3

clang/llvm può generare graphviz dot files.

Esempio:

clang -S -emit-llvm -o hello.ll hello.cpp 
opt hello.ll -dot-cfg -o hello.dot 

Questa uscita diversi .dot file, uno per ogni funzione definita in hello.cpp. È inoltre possibile generare grafico di dominanza, grafico di posizione dominante e altro (vedere here).

Dopo aver i file .dot è possibile utilizzare dot per convertirlo in un file .png. Il file .dot contiene solo la struttura del grafico, quindi l'output di dot deve essere altamente configurabile (ma non ho molta familiarità con esso).

+1

Grazie per il suggerimento! I file .dot sono davvero grandi per il compito che ho. – Konstantin

2

strumento Architetto Utilizzare Enterprise.

http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/execution_analyzer/generating_sequence_diagram.html

è possibile generare diagramma di sequenza, mentre il debug del codice.

Dimostrazione: Online Demo

Nota: - Questo funziona con codice C++ pure. Basta usare il debugger nativo.

+0

Grazie per il suggerimento. È configurabile, posso cambiare l'aspetto dei grafici lì? Il grafico risultante nella demo che hai menzionato è di tipo ... – Konstantin

+0

No, quelli sono diagrammi di sequenza. I diagrammi di sequenza oi diagrammi di attività sono validi per la base di codice orientata agli oggetti e la tua domanda è su C++. Se si desiderano diagrammi di flusso specifici, utilizzare Code designer di razzi. http://www.rapidqualitysystems.com/ – user1

0

Se non ti interessa l'output in testo normale, "cflow" farà il lavoro. È nei repository di almeno Debian e probabilmente nella maggior parte delle distro di Linux.

+0

Sembra che cflow crei i grafici delle chiamate ma ho bisogno dei diagrammi di flusso (come funziona l'algoritmo) – Konstantin

+0

Ah. Sì, sta analizzando la tua fonte staticamente, quindi se vuoi sapere come il tuo programma scorre effettivamente in fase di runtime, non ti aiuterà. – JorenHeit

Problemi correlati