5

Java クラス (静的ソース コード -> .java ファイル) とメソッド シグネチャ、コメント/ドキュメント、各メソッドの変数からメソッドを抽出できるパーサーを探しています。できればJavaプログラミング言語で。

誰かアドバイスしてくれませんか?

ありがとう。

4

3 に答える 3

8

Eclipse で ASTParser を使用できます。使い方はとても簡単です。

ここで簡単なスタンドアロンの例を見つけてください

于 2012-06-16T05:12:18.257 に答える
5

Javaファイルからメソッドシグネチャを抽出するために私が行うことは次のとおりです。

私はSublimeText2を使用して、署名を取得したいファイルに、作成した次の正規表現に正規表現を設定して検索Ctrl+Fを実行します(コードでテストしたところ、機能することを願っています。それも)

((synchronized +)?(public|private|protected) +(static [a-Z\[\]]+|[a-Z\[\]]+) [a-Z]+\([a-Z ,\[\]]*\)\n?[a-Z ,\t\n]*\{)

Sublime Text 2で結果を強調表示した後、[すべて検索]をクリックし、[+]をコピーして、新しいタブCtrl+をC開き、Ctrl+Nを貼り付けます。 次に、すべてのメソッドシグネチャが表示されます。CtrlV

お役に立てば幸いです。

于 2012-12-26T09:54:57.877 に答える
1

メソッドの正確なテキストと、メソッド内の変数の正確なテキストだけが必要な場合は、CST を生成するパーサーを使用して、CST をたどって正しいノードを見つけ、見つかったサブツリーをプリティプリントすることができます。 ANTLR には、これに適した Java パーサーがあります。それがコメントをキャプチャするかどうかはわかりません。ANTLR の主なディストリビューションは Java でコーディングされていると思います。

Java では、キー フレーズを探す悪いアイランド パーサーに相当するものを実装する Java 用のレクサーを使用して、これをよりハックに行うことができます。(「'class' の後、'{' を検索し、一致する '}' までのすべてを出力します」と指定すると、すべてのメソッドとフィールドが表示されます)。

より正確な詳細が必要な場合 (たとえば、引数の名前だけでなく実際の型や、型が実際に定義されている場所を知りたい場合)、完全なフロント エンドと名前解決を備えたパーサーが必要になります。(ANTLR はこれを行いません。) Eclipse JDTは確かにツリーを構築します。名前解決を行う可能性があります。Java フロント エンドを備えたDMS ソフトウェア リエンジニアリング ツールキットは、コメントのキャプチャや抽出など、このタスクに必要なすべてを提供できます。DMS は Java でコーディングされていません。

Javadoc はメソッドの内容を提供しないため、不適切であると反対しました。おそらく、そのコードを提供するJava Source Browserの方が適切に機能するでしょう。DMS/Java フロント エンドからの名前解決データを統合して、JavaDoc タイプの情報を閲覧可能なソース テキストにハイパーリンクします。すべてのフィールドとローカル変数に明示的にインデックスが付けられます。ソース ブラウザは Java でコーディングされていませんが、おそらくそれを実行して結果をスクレイピングしたいだけでしょう。このようなスクレイピングは、画面をじっと見つめているように見えるよりも難しい場合があります。このような表示の背後には多くの HTML があります。

于 2012-06-16T05:07:54.060 に答える