/** Returns true iff the edge e is wanted. */ public boolean want(Edge e) { return e.isExplicit(); } }
Edge e = (Edge) edgeIt.next(); SootMethod node = e.src(); if (!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr()) {
while (callerEdges.hasNext()) { Edge callEdge = (Edge) callerEdges.next(); if (!callEdge.isExplicit()) { continue;
Pair<Node, Node> pval; if (e.isExplicit() || e.kind() == Kind.THREAD || e.kind() == Kind.ASYNCTASK) { addCallTarget(srcmpag, tgtmpag, (Stmt) e.srcUnit(), e.srcCtxt(), e.tgtCtxt(), e); } else if (e.kind() == Kind.EXECUTOR) {
/** Returns true iff the edge e is wanted. */ public boolean want( Edge e ) { return e.isExplicit(); } }
/** Returns true iff the edge e is wanted. */ public boolean want( Edge e ) { return e.isExplicit(); } }
/** * Resolves virtual calls using the default call graph and returns * a list of methods which are the targets of explicit edges. * TODO: Should we consider thread/clinit edges? */ @Override public List<SootMethod> resolveTargets(SootMethod method, Unit node) { List<SootMethod> targets = new LinkedList<SootMethod>(); Iterator<Edge> it = Scene.v().getCallGraph().edgesOutOf(node); while(it.hasNext()) { Edge edge = it.next(); if (edge.isExplicit()) { targets.add(edge.tgt()); } } return targets; }
if(!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr())
if(!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr())
while (callerEdges.hasNext()){ Edge callEdge = (Edge)callerEdges.next(); if (!callEdge.isExplicit()) continue; SootMethod methodCaller = callEdge.src();
while (callerEdges.hasNext()){ Edge callEdge = (Edge)callerEdges.next(); if (!callEdge.isExplicit()) continue; SootMethod methodCaller = callEdge.src();