プログラムで .java ファイルを分析するために、Soot をいじり始めたところです。私が読んだ限りでは、Soot はソース コード分析用の非常に強力なツールのようですが、オンラインで見つけた資料のほとんどは、それをコマンド ライン ツールとして使用することについて述べています。
特定のディレクトリにある .java ファイルからプログラムでクラスをロードし、プログラム依存グラフ (PDG) を構築し、プログラム スライスを実行する必要があります。Soot がスライスを提供しているかどうかはまだわかりませんが、PDG があれば自分で実装できます。
まず、以下のコードを使用してみました。
Options.v().set_whole_program(true);
Options.v().set_soot_classpath("...");
SootClass c = Scene.v().loadClassAndSupport("MyClass");
c.setApplicationClass();
CHATransformer.v().transform();
CallGraph cg = Scene.v().getCallGraph();
しかし、うまくいきません。呼び出しで数秒間立ち往生し、loadClassAndSupport
その後、例外などを何も与えずに、プログラムが突然存在します。
誰かがプログラムで Soot を使用しようとした場合、他に設定する必要のあるオプションはありますか? または、プログラムで最初からSoot をセットアップするチュートリアルを教えてもらえますか?