2017-11-02 24 views
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" 

    }); 

答えて

0

これは確かに難しいことです。あなたは2つのグラフで何をしようとしているのか説明してください。たぶん私は良い解決策を考えることができます。

関連する問題