Domanda

ho ricevuto un pacchetto di c ++ file con il codice sorgente statico (già sviluppata, non è necessario fare nulla per loro).

C'è un programma di / lib / modo per ottenere un elenco del numero di params ogni funzione withing uno di quei file?

Voglio dire, ottenendo un risultato come:

#File a.cpp
##a() -> 3 paramss
##foo() -> 0 params (void)

#File b.cpp
##test() -> 1 param

....

E una domanda migliore.

Non v'è alcun modo per elaborare anche il numero dei ritorni ha?

#File a.cpp
##a() -> 3 params, 1 return
##foo() -> 0 params (void), 2 returns

Per esempio, se "foo" ha un ritorno se la condizione è vera e un altro se false

Grazie in anticipo.

È stato utile?

Soluzione

Si potrebbe provare a eseguire Doxygen sopra i file di origine.

Dato che il contenuto è (presumibilmente) non documentata, è necessario configure doxygen per estrarre contenuti da file privi di documenti.

Se si desidera solo per sfogliare un elenco delle funzioni disponibili, è possibile utilizzare l'output HTML.

Si potrebbe anche configurare l'uscita Doxygen essere XML, e poi scrivere un parser per tirare le statistiche che si sta cercando in ogni funzione.

Altri suggerimenti

Vorrei contare il numero di "" e iniziare a 1. Questo dovrebbe dare un conteggio accurato del numero di argomenti a una funzione. Poi vorrei controllare per vedere se "vuoto" esiste prima il nome della funzione, se poi non si può scommettere che c'è un valore di ritorno.

ifstream infile;
infile.open(...);
int i, ret, args;
String s;

ret = args = 0;
s = infile.getline();
for( i=0; s[i] != '('; i++ ) {
 if( s[i] == 'v' && s[i+1] == 'o' && s[i+2] == 'i' && s[i+3] == 'd' ) {
  ret = 1;
  break;
 }
}

for( i=0; s[i] != '('; i++ ) {}

for( i; s[i] != ')'; i++ ) {
 if( args == 0 && s[i] != ' ' ) {
  args++;
 }
 if( s[i] == ',' ) {
  args++;
 }
}

Tutto questo è il modo sopra le righe, ma forse questo potrebbe essere la vostra tazza di tè, Elsa può analizzare C ++ e fornire un albero di sintassi astratta del file analizzato. Ci potrebbero essere alcuni altri strumenti gratuiti là fuori che può fare lo stesso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top