2010-03-22 12 views
5

Sto cercando uno strumento che indichi/risolva per ogni funzione tutti i percorsi di chiamata (chiamiamoli "percorsi") ad esso.Risolutore di chiamate di chiamate C++

Ad esempio:

void deeper(int *pNumber) 
{ 
*pNumber++; 
} 
void gateA(int *pNumber) 
{ 
deeper(pNumber); 
} 
void gateB(int *pNumber) 
{ 
gateA(pNumber); 
} 

void main() 
{ 
int x = 123; 
gateA(&x); 
gateB(&x); 
} 

Vedi? Ho bisogno di uno strumento che mi indichi tutti i percorsi per approfondire() e, se possibile, di più.

Dicendo "altro" intendo che mi dirà se il puntatore è lo stesso che è stato fornito alla funzione chiamante.

Questo mi farà risparmiare molto tempo. Grazie!

+1

Essa non deve essere eseguito su una specifica piattaforma (Windows, Mac OSX, Linux, OpenBSD, OpenSolaris, qualunque)? –

+1

È necessario rilevare le chiamate indirette, ad esempio tramite i puntatori di funzione o le chiamate virtuali? –

+0

@David: sto usando Windows. Per me è abbastanza. @Rob: Non mi aspetterei una simile funzione anche se questo migliorerebbe enormemente la popolarità dello strumento (: Sembra che la gente qui abbia suggerito buone soluzioni. Verificherò più tardi. – Poni

risposta

5

Doxygen lo farà per voi. Ti disegnerà alberi di eredità e mostrerai a tutti coloro che chiamano (e chiamano) le tue funzioni.

+0

Stavo per suggerire a me stesso. –

6

Penso cppDepend ha tale funzionalità (insieme ad altre funzioni di analisi del codice)

1

si può guardare la clang analyzer.

Clang Static Analyzer è uno strumento di analisi del codice sorgente che trova gli errori nei programmi C/C++ e Objective-C.

non ho provato ma guardando le schermate di revisione del codice, potrebbe essere utile

Problemi correlati