私は、大学のクラスのスタティックアナライザーを作成しようとしています。ツールのためのより多くのパワーを提供するために、コール階層を調べることができます(Ctrl + Alt + HはEclipseで行います)。これも高速な操作でなければならないため、バイトコードスキャンではなくインデックスに対してルックアップを実行する必要があります。Eclipseのコード索引作成機能を切り離すことはできますか?
しかし、Eclipseプラグインを書くことはあまりにも野心的です。代わりに、コードインデックスを作成するEclipseの部分をデカップリングし、ライブラリを使用して参照を行います。実装を単純化するために、ユーザーとのインターフェイスはコマンドライン上にあります。
EclipseはLuceneを使用して索引付けを行っていますが、Eclipseが許す機能のためにはLuceneの上でかなりの量の作業が必要です。
質問は、再利用のためにEclipseの索引機能を切り離すことは可能ですか?もしそうでなければ、私が議論したような処理を行うことができる他のライブラリがありますか?
アクション[1] Luceneの(IIRC)
EDIT
私はいくつかの誤解があったと思います。私はクラスの階層を調べるために探していない、私はの呼び出しを検査したいと思います。だからこそ、検索と索引付け(何らかの種類がありますが、それは適切な用語ではないかもしれませんが)が議論に入る理由です。クラス階層を調べることは、おそらく呼び出し階層を調べるよりもはるかに安いでしょう。
Eclipseプラグインを作成する場合、私は大好きですが、この割り当てが非常に短いタイムスケールにあるとすれば、私はそれを管理することはほとんどありません。しかし、それは私が思うほど厳しくはないと感じている人がいるという役に立つ情報です。
おそらく私はEclipseに重点を置いているかもしれませんが、実際に私は、バイトコードを通してコールグラフを検査するためのAPIを提供するツールを探していました。
これまでのお返事ありがとうございます!
- Eclipseが非常に速く実行する方法について知っておくべき重要なことは、一般的なインデックスを一度作成し、クラスが変更されたときにのみそれを更新することです。だから、私はこのEclipseの機能から切り離すことはほとんどないと思う。コール階層の索引テーブルを構築する(コール階層を検索する各タイプをスキャンしなくて済むように保存できる)最初のフルバイトコード分析を避ける方法はわかりません。 本当に巨大なコードベースを除いて正直言って、ASMでは完全スキャンが本当に速く、 "デルタインデクサ"を書くのに費やす時間は労力に値するものではありません。 – Olivier
最初の初期スキャンで問題はありません。私がもっと心配しているのは、それを実行するAPIを見つけることです(クラスのスコープ外)。最初の完全スキャンがASMで行われている場合は問題ありませんが、私はこのビットを書くことを避けたいです;-) – Grundlefleck