質問

私はCのパック++(彼らに何もする必要がない、既に開発し、)静的ソースコードを含むファイルを持っています。

これらのファイルのいずれかをwithing各機能のparamsの数のリストを取得するためのプログラム/ libに/方法はありますか?

私のような結果を得て、意味します

#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
条件が真であると場合は、

は、たとえば「fooが」リターンを持っている場合は、別の場合はfalse

事前に感謝します。

役に立ちましたか?

解決

あなたは、ソースファイル上で Doxygenのを実行してみてください可能性があります。

コンテンツがあるので

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

あなただけの使用可能な機能のリストを閲覧したい場合は、

は、HTML出力を使用することができます。

また、XMLであることをDoxygenの出力を設定し、その後、各機能に探している統計情報をプルするパーサを書くことができます。

他のヒント

私は「」の数をカウントし、あなたの関数の引数の数の正確なカウントを与える必要があります。1.これで開始します。それから私は、「空」は、関数名の前に存在し、そうでない場合は、あなたは、戻り値があることを賭けることができるかどうかを確認します。

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

このすべては、トップオーバーの方法ですが、多分これは、お茶のあなたのカップであるかもしれない、エルザはのは、C ++を解析し、解析されたファイルの抽象構文木を提供することができます。

同じことを行うことができますが、いくつかの他の無料ツールアウトがあるかもしれません
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top