0
スートの2つのグラフを比較したいと思います。しかし、私はできません。私は2つのディレクトリ "src"と "dst"からクラスをロードしようとしました。そして、オブジェクトicfgには2つの開始点があると思いました。しかし、そうではありません。スートを使って2つのグラフを作成する方法
私はまた、 "soot.Main.main"を2回呼び出すことを試みました。それは動作しません。 2つのグラフを作成するにはどうすればよいですか?私にお知らせください。私にコードスニペットを教えてください。
public void makeICFG(String src, String dst){
PackManager.v().getPack("wjtp").add(
new Transform("wjtp.myTransform1", new SceneTransformer() {
protected void internalTransform(String phaseName, Map options) {
System.out.println();
System.out.println();
InterproceduralCFG<Unit, SootMethod> icfg = new JimpleBasedInterproceduralCFG();
SootMethod m = Scene.v().getMainMethod();
//SootMethod m = Scene.v().loadClassAndSupport("targetSrc.HelloWorld").getMethodByName("main"); //when a main doesn't exist
Iterator<Unit> it = icfg.getStartPointsOf(m).iterator();
Unit unit = it.next();
System.out.println(unit);
DFSTraverseG(icfg, unit);
System.out.println();
System.out.println();
}
}));
soot.Main.main(new String[] {
"-cp", "C:\\Users\\soo\\Desktop\\eclipse-java-mars-2-win32-x86_64\\test1\\sootclasses-trunk.jar;"
+ "C:\\Users\\soo\\Desktop\\eclipse-java-mars-2-win32-x86_64\\test1\\sootclasses-trunk-jar-with-dependencies.jar;"
+ "C:\\Users\\soo\\Desktop\\eclipse-java-mars-2-win32-x86_64\\TestTarget\\bin;"
+ "C:\\Users\\soo\\Desktop\\eclipse-java-mars-2-win32-x86_64\\RTSTest\\bin",
"-pp",
"-process-dir", src,
"-process-dir", dst,
"-w",
"-p", "cg.spark", "verbose:true,apponly:true",
"-f", "J"
});