たとえば、jarファイルや定義されたクラスパスからJavaソースコードを解析できるC ++ライブラリ(オープンソース、または非営利目的で無料)を知っていますか?クラス、クラスメンバー、メソッド、メソッド呼び出し、およびこれらのアーティファクト間の関係を抽出したいと思います。
私は解決策を探すために一日中グーグルで過ごしました。私は盲目であるか、読むことができません!:)
jar ファイルは実際には (バイナリ) クラス ファイルのセットであるため、 jarファイルからソース コードを取得することはできません。jar ファイルを生成するために使用された可能性のあるソース コードを意味すると仮定すると、まともな答えがあります。
オープン ソース ソリューションが必要な場合は、ANTLRを試すことができます。これにはJava 1.5 文法があり、AFAIK は AST をビルドします。そこから、必要なアイテムのツリー、または少なくとも関心のあるサブツリーの行番号を「抽出」できます。そこから、必要なコードを抽出できます。
C++ ベースのパーサーを生成するように ANTLR を構成できると思います。
これらの間の関係を把握するには、完全な名前と型の解決が必要です。これにより、識別子が実際にどの定義を参照しているかがわかります。このため、単なるパーサーである ANTLR ではうまくいきません。解析後の生活を送る必要があります。
代替手段は Java コンパイラかもしれません。ある種の API を提供します。