Question

Je suis un paquet de c ++ fichiers avec le code source statique (déjà développé, pas besoin de faire quoi que ce soit pour eux).

Il y a un programme / lib / moyen d'obtenir une liste du nombre de params chaque fonction withing un de ces fichiers?

Je veux dire, obtenir un résultat comme:

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

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

....

Et une meilleure question.

Il y a un moyen de traiter également le nombre de déclarations qu'il a?

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

Par exemple, si « foo » a un retour si la condition est vraie et une autre si elle est fausse

Merci d'avance.

Était-ce utile?

La solution

Vous pouvez essayer d'exécuter Doxygen sur les fichiers source.

Étant donné que le contenu est (probablement) sans papier, vous devez configure doxygen pour extraire le contenu des fichiers sans papiers.

Si vous voulez juste parcourir la liste des fonctions disponibles, vous pouvez utiliser la sortie HTML.

Vous pouvez également configurer la sortie Doxygen être XML, puis écrire un analyseur pour tirer des statistiques que vous cherchez sur chaque fonction.

Autres conseils

Je comptais le nombre de « » et commencer à 1. Cela devrait vous donner un décompte précis du nombre d'arguments à une fonction. Alors je vérifier si « vide » existe avant le nom de la fonction, sinon vous pouvez parier qu'il ya une valeur de retour.

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

Tout cela est bien au-dessus, mais peut-être cela pourrait être votre tasse de thé, Elsa peut analyser c ++ et vous fournir un arbre de syntaxe abstraite du fichier analysé. Il pourrait y avoir d'autres outils gratuits qui il peut faire la même chose

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top