2

静的ソース コードを含む C++ ファイルのパックを入手しました (既に開発されており、何もする必要はありません)。

これらのファイルのいずれかで各関数のパラメータ数のリストを取得するプログラム/ライブラリ/方法はありますか?

つまり、次のような結果が得られます。

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

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

....

そして、より良い質問です。

返品の数も処理する方法はありますか?

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

たとえば、条件が true の場合は "foo" が返され、false の場合は別のものが返される場合

前もって感謝します。

4

3 に答える 3

2

ソースファイルに対してDoxygenを実行してみてください。

コンテンツは (おそらく) 文書化されていないため、文書化されていないファイルからコンテンツを抽出するように doxygen を構成する必要があります。

利用可能な関数のリストをブラウズしたいだけなら、HTML 出力を使用できます。

また、Doxygen の出力を XML に構成し、パーサーを記述して、各関数で探している統計を取得することもできます。

于 2009-07-13T00:29:50.037 に答える
0

これはすべて上手くいきますが、おそらくこれはあなたのお茶かもしれません。Elsaはc ++を解析し、解析されたファイルの抽象構文ツリーを提供できます。同じことをすることができる他のいくつかの無料のツールがあるかもしれません

于 2009-07-13T01:59:41.080 に答える
0

「,」の数を 1 から数えます。これにより、関数の引数の数を正確にカウントできます。次に、関数名の前に「void」が存在するかどうかを確認します。存在しない場合は、戻り値があると確信できます。

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++;
 }
}
于 2009-07-13T00:30:09.520 に答える