私は現在、2 つの制御フロー グラフを比較するプログラムに取り組んでいます (グラフは Soot で生成されます)。これらのグラフは 2 つの異なるクラスに属します。したがって、それぞれに 1 つの cfg です。
現在、クラスをロードするために以下を使用しています。
SootClass sClassNew = Scene.v().loadClassAndSupport("Calc");
sClassNew.setApplicationClass();
SootClass sClassOld = Scene.v().loadClassAndSupport("Calc2");
sClassOld.setApplicationClass()
プロジェクトを右クリックしてクラス Calc.java および Calc2.java を含むフォルダーを追加すると、これが機能します | Java ビルド パス | 外部クラス フォルダを追加| フォルダーを選択します。
残念ながら、これはまさに私が望んでいるものではありません。
- 2 つのクラスは、互いに異なるバージョンであるため、同じ名前になります。つまり、一方のクラスがもう一方のクラスの更新バージョンです。
- プログラムの実行時に、cfg が作成されるように、ユーザーがファイルを選択できるようにしたいと考えています。したがって、クラスを追加するために上記の手順を省略し、実行時にクラスを追加する方法が必要です。
重要な注意点として、Soot は JAR ファイルおよび Soot のクラスパスにあるディレクトリからのみファイルをロードします。これら2つの問題を解決する方法を知っている人はいますか?