1 19 20 package edu.umd.cs.findbugs; 21 22 import java.util.IdentityHashMap ; 23 24 import org.apache.bcel.classfile.Method; 25 26 import edu.umd.cs.findbugs.graph.AbstractGraph; 27 28 public class CallGraph extends AbstractGraph<CallGraphEdge, CallGraphNode> { 29 private IdentityHashMap <Method, CallGraphNode> methodToNodeMap; 30 31 public CallGraph() { 32 this.methodToNodeMap = new IdentityHashMap <Method, CallGraphNode>(); 33 } 34 35 public CallGraphEdge createEdge(CallGraphNode source, CallGraphNode target, CallSite callSite) { 36 CallGraphEdge edge = createEdge(source, target); 37 edge.setCallSite(callSite); 38 return edge; 39 } 40 41 public CallGraphNode addNode(Method method) { 42 CallGraphNode node = new CallGraphNode(); 43 addVertex(node); 44 node.setMethod(method); 45 methodToNodeMap.put(method, node); 46 return node; 47 } 48 49 public CallGraphNode getNodeForMethod(Method method) { 50 return methodToNodeMap.get(method); 51 } 52 53 @Override 54 protected CallGraphEdge allocateEdge(CallGraphNode source, CallGraphNode target) { 55 return new CallGraphEdge(source, target); 56 } 57 } 58 59 | Popular Tags |