Pregunta

Tengo un paquete de C ++ con archivos de código fuente estático (ya desarrollado, no es necesario hacer nada para ellos).

Hay un / lib / modo programa para obtener una lista del número de params cada función withing uno de esos archivos?

Es decir, conseguir un resultado como:

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

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

....

Y una mejor pregunta.

No hay ninguna manera de procesar también el número de vueltas que tiene?

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

Por ejemplo, si "foo" tiene un retorno si la condición es verdadera y otro si false

Gracias de antemano.

¿Fue útil?

Solución

Se podría intentar ejecutar Doxygen en los archivos de origen.

Dado que el contenido es (presumiblemente) indocumentado, es necesario configurar Doxygen para extraer el contenido de archivos sin papeles.

Si lo que desea es buscar en una lista de las funciones disponibles, se puede utilizar la salida HTML.

También puede configurar la salida de Doxygen a ser XML, y luego escribir un analizador para extraer estadísticas que usted está buscando en cada función.

Otros consejos

Me gustaría contar el número de "" y empezar a 1. Esto debe darle una cifra exacta del número de parámetros a la función. A continuación, me gustaría comprobar para ver si "vacío" existe antes de que el nombre de la función, si no, entonces usted puede apostar que hay un valor de retorno.

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

Todo esto es muy por encima, pero tal vez esto podría ser su taza de té, Elsa puede analizar c ++ y le proporcionará un árbol de sintaxis abstracta del archivo analizado. Puede haber algunas otras herramientas gratuitas por ahí que puede hacer lo mismo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top