È 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++
risposta
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).
Grazie per il suggerimento! I file .dot sono davvero grandi per il compito che ho. – Konstantin
strumento Architetto Utilizzare Enterprise.
è 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.
Grazie per il suggerimento. È configurabile, posso cambiare l'aspetto dei grafici lì? Il grafico risultante nella demo che hai menzionato è di tipo ... – Konstantin
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
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.
Sembra che cflow crei i grafici delle chiamate ma ho bisogno dei diagrammi di flusso (come funziona l'algoritmo) – Konstantin
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
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
Quindi EA fornisce un'analisi * dinamica *, non un'analisi statica. –