Frage

habe ich eine Packung von c ++ Dateien mit statischen Quellcode (bereits entwickelt, nicht benötigte ihnen etwas zu tun).

Es gibt ein Programm / lib / Weg, um eine Liste der Anzahl der params jede Funktion withing eine dieser Dateien zu bekommen?

Ich meine, immer ein Ergebnis wie:

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

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

....

Und eine bessere Frage.

Es gibt eine Möglichkeit, auch die Anzahl der Retouren zu verarbeiten hat?

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

Zum Beispiel, wenn „foo“ hat eine Rückkehr, wenn die Bedingung wahr ist, und eine andere, wenn false

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sie könnten versuchen, laufen Doxygen über die Quelldateien.

Da der Inhalt (vermutlich) nicht dokumentiert ist, müssen Sie configure doxygen zu extrahieren Inhalt von undokumentierten Dateien.

Wenn Sie nur eine Liste der verfügbaren Funktionen durchsuchen möchten, können Sie die HTML-Ausgabe verwendet werden.

Sie können auch Doxygen Ausgang konfigurieren XML zu sein, und dann einen Parser schreiben, um Statistiken zu ziehen, die Sie zu jeder Funktion suchen.

Andere Tipps

Ich würde die Zahl der „“ zählen und bei 1. Diese beginnen sollten Sie eine genaue Zählung der Anzahl der Argumente einer Funktion geben. Dann würde ich prüfen, ob „Leere“ vor dem Namen der Funktion vorhanden ist, wenn nicht, dann können Sie darauf wetten, dass es ein Rückgabewert ist.

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++;
 }
}

Alles ist auf diese Weise übertrieben, aber vielleicht könnte dies Ihre Tasse Tee, Elsa kann c analysieren ++ und bieten Ihnen einen abstrakten Syntaxbaum der analysierten Datei. Es könnte einige andere kostenlose Tools da draußen sein, dass das gleiche tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top