Pergunta

Eu tenho um pacote de c ++ arquivos com código fonte estática (já desenvolvida, não é necessário fazer nada para eles).

Existe um programa / lib / maneira de obter uma lista do número de parâmetros cada uma função withing desses arquivos?

Quer dizer, obtendo um resultado como:

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

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

....

E uma pergunta melhor.

Existe alguma maneira de também processar o número de retornos que tem?

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

Por exemplo, se "foo" tem um retorno se a condição for verdadeira e outro se false

Agradecemos antecipadamente.

Foi útil?

Solução

Você poderia tentar correr Doxygen sobre os arquivos de origem.

Uma vez que o conteúdo é (presumivelmente) em situação irregular, você precisa configure doxygen para o conteúdo extrato de arquivos ilegais.

Se você quer apenas navegar por uma lista das funções disponíveis, você pode usar a saída HTML.

Você também pode configurar a saída Doxygen ser XML, e em seguida, escrever um analisador para as estatísticas de tração que você está procurando em cada função.

Outras dicas

Gostaria de contar o número de "", e começam em 1. Isso deve lhe dar uma contagem precisa do número de argumentos para uma função. Então eu iria verificar para ver se "vazio" existe antes o nome da função, se não, então você pode apostar que há um 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++;
 }
}

Tudo isso é o meio mais alto, mas talvez isso poderia ser a sua chávena de chá, Elsa pode analisar c ++ e fornecê-lo com uma árvore de sintaxe abstrata do arquivo analisado. Pode haver algumas outras ferramentas gratuitas lá fora, que podem fazer o mesmo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top