2013-12-08 10 views
5

Con clang e graphviz posso generare il grafo di chiamata per un codice C/C++ as explained in this answer.Come posso generare un grafico del flusso di dati con clang o altri strumenti?

Ora ho bisogno di un diagramma del flusso di dati calcolato su un codebase molto grande (è C per la maggior parte), questo codebase è un software in cui lo strumento di costruzione è cmake.

Quindi il mio problema è, dato il nome di una struttura dati, come posso recuperare i nomi delle funzioni e dei file usando/implementando questa struttura?

C'è un po 'scarsa riferimento ad alcuni algoritmi di data mining di flusso dei dati all'interno Libtool dal progetto clang (non sono nemmeno sicuro se si tratta di qualcosa di stabile o in fase di sviluppo), ma ho trovato nulla su clang stesso o scan-build.

Come posso generare questa informazione? Ho davvero bisogno di questo, dato un nome che vorrei recuperare dove è usato nel codice, praticamente tutti gli strumenti di analisi statica che ho esaminato si concentrano su funzioni e metodi, ho bisogno di controllare l'utilizzo di una struttura dati in clang.

EDIT:

Sto anche pensando di utilizzare doxygen per la documentazione, per cui se l'output XML di doxygen potrebbe essere utile per qualche strumento, posso usarlo.

+0

Questo potrebbe essere un po 'bizzarro, ma hai pensato di caricare l'intero codebase in Eclipse, quindi usare le funzioni di ricerca di Eclipse per farlo? – slugonamission

+0

@slugonamission bene, dato che non riesco a trovare niente che funzioni ...; nome quali strumenti dovrei usare con Eclipse, so che CDT è la suite Eclipse per C e C++, ma non so cosa viene usato per questo tipo di analisi. – algl

+0

non è proprio per il flusso di dati, ma i tuoi requisiti sembrano proprio essere quello di controllare dove viene utilizzata una struttura di dati. Usando CDT + Eclipse, puoi almeno trovare graficamente dove viene utilizzata una struttura dati (in uno dei menu di ricerca da qualche parte), ma non un DFG completo. – slugonamission

risposta

-1

È possibile interrogare

  • tutti i riferimenti a un simbolo
  • definizioni globali
  • funzioni chiamate da una funzione
  • le funzioni di chiamata di una funzione
  • file tra cui un file
  • e più .

con cscope.

+0

non c'è nulla che funzioni visivamente? Poiché questo progetto è davvero grande, un semplice elenco di testi dal terminale diventerà presto molto complesso da gestire in modo utile; inoltre non c'è nessuna parola su quella pagina sugli strumenti di costruzione esterni, ho bisogno di questo tipo di cooperazione a causa delle dimensioni e del processo di costruzione della mia base di codice. – algl

+1

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. –

+0

come @JohnDoyle, questa domanda è stata contrassegnata per la cancellazione per essere solo un collegamento. Ti consiglio di ri-pubblicare una risposta più completa. –