/** * <p> * <b>SOOT USERS: DO NOT CALL THIS METHOD!</b> * </p> * * <p> * This method is a Soot-internal factory method for generating callgraph objects. It creates non-initialized object that * must then be initialized by a callgraph algorithm * </p> * * @return A new callgraph empty object */ public CallGraph internalMakeCallGraph() { return new CallGraph(); }
/** This constructor builds the incomplete hack call graph for the * Dava ThrowFinder. * It uses all application class methods as entry points, and it ignores * any calls by non-application class methods. * Don't use this constructor if you need a real call graph. */ public CallGraphBuilder() { G.v().out.println( "Warning: using incomplete callgraph containing "+ "only application classes." ); pa = soot.jimple.toolkits.pointer.DumbPointerAnalysis.v(); cg = new CallGraph(); Scene.v().setCallGraph(cg); List<MethodOrMethodContext> entryPoints = new ArrayList<MethodOrMethodContext>(); entryPoints.addAll( EntryPoints.v().methodsOfApplicationClasses() ); entryPoints.addAll( EntryPoints.v().implicit() ); reachables = new ReachableMethods( cg, entryPoints ); ContextManager cm = new ContextInsensitiveContextManager( cg ); ofcgb = new OnFlyCallGraphBuilder( cm, reachables, true ); } public void build() {
CallGraph callGraph = new CallGraph();
/** This constructor builds the incomplete hack call graph for the * Dava ThrowFinder. * It uses all application class methods as entry points, and it ignores * any calls by non-application class methods. * Don't use this constructor if you need a real call graph. */ public CallGraphBuilder() { G.v().out.println( "Warning: using incomplete callgraph containing "+ "only application classes." ); pa = soot.jimple.toolkits.pointer.DumbPointerAnalysis.v(); cg = new CallGraph(); Scene.v().setCallGraph(cg); List<MethodOrMethodContext> entryPoints = new ArrayList<MethodOrMethodContext>(); entryPoints.addAll( EntryPoints.v().methodsOfApplicationClasses() ); entryPoints.addAll( EntryPoints.v().implicit() ); reachables = new ReachableMethods( cg, entryPoints ); ContextManager cm = new ContextInsensitiveContextManager( cg ); ofcgb = new OnFlyCallGraphBuilder( cm, reachables, true ); } public void build() {
/** This constructor builds a complete call graph using the given * PointsToAnalysis to resolve virtual calls. */ public CallGraphBuilder( PointsToAnalysis pa ) { this.pa = pa; cg = new CallGraph(); Scene.v().setCallGraph( cg ); reachables = Scene.v().getReachableMethods(); ContextManager cm = makeContextManager(cg); ofcgb = new OnFlyCallGraphBuilder( cm, reachables ); } /** This constructor builds the incomplete hack call graph for the
/** This constructor builds a complete call graph using the given * PointsToAnalysis to resolve virtual calls. */ public CallGraphBuilder( PointsToAnalysis pa ) { this.pa = pa; cg = new CallGraph(); Scene.v().setCallGraph( cg ); reachables = Scene.v().getReachableMethods(); ContextManager cm = makeContextManager(cg); ofcgb = new OnFlyCallGraphBuilder( cm, reachables ); } /** This constructor builds the incomplete hack call graph for the