在Soot中调用图表

时间:2016-06-23 13:39:59

标签: java eclipse call-graph soot

如何在Call图表中使用SOOT进行构建?或者有更好的计划吗?我被发送到同样的五页寻找答案,我无法找到我要找的东西。 Eclipse的插件版本也存在问题。它安装正确,但我想在运行代码时无法选择它。

2 个答案:

答案 0 :(得分:1)

对上一个答案的小修改

private static void visit(CallGraph cg, SootMethod method) {
  String identifier = method.getSignature();
  visited.put(method.getSignature(), true);
  dot.drawNode(identifier);
  // iterate over unvisited parents
  Iterator<MethodOrMethodContext> ptargets = new Sources(cg.edgesInto(method));
  if (ptargets != null) {
    while (ptargets.hasNext()) {
        SootMethod parent = (SootMethod) ptargets.next();
        if (!visited.containsKey(parent.getSignature())) visit(cg, parent);
    }
}

答案 1 :(得分:0)

以下是一些示例,包括Java的调用图。 http://www.brics.dk/SootGuide/

为apk调用图表。 https://github.com/secure-software-engineering/soot-infoflow/issues/38

如果你想获得点文件,你可以迭代调用图并以点格式写出内容。

    $from_date = strtotime($fDay.date('F',mktime(0,0,0,$fMonth,15,2006)).$fYear);
    $to_date = strtotime($tDay.date('F',mktime(0,0,0,$tMonth,15,2006)).$tYear);

    $from_datetime = date_create(date("Y-m-d", $from_date));
    $to_datetime = date_create(date("Y-m-d", $to_date));

    //Statistikvariabler
    $all_orders = $DBcon->query("SELECT * FROM `order_structure` WHERE `date`>={$from_date} && `date`<={$to_date}");
    //Räkna ut totalsumma från och med nyår
    $all_orders_sum = $DBcon->query("SELECT * FROM `order_structure` WHERE `date`>={$from_date} && `date`<={$to_date}");
    $all_sum = 0;
    //Använd ovanstående för att räkna ut snittorder
    while($sum = $all_orders->fetch_assoc() ){
        $all_sum += $sum['sum'];
    }

    //Räkna ut debiterade timmar
    $all_orders_debs = $DBcon->query("SELECT * FROM `order_data` WHERE (`status`=3 || `status`=4) && `date`>={$from_date} && `date`<={$to_date}");
    $all_time = 0;
    $all_prods = 0;
    while( $debs = $all_orders_debs->fetch_assoc() ){
        $all_time += $debs['minutes'];
        $all_prods += $debs['sek'];
    }