OSDN Git Service

Changed "for" description.
[soba/JavaAnalysisToolsDemo.git] / JavaAnalysisToolsDemo / src / demo / wala / ClassHierarchyPerformance.java
1 package demo.wala;\r
2 \r
3 import java.util.Iterator;\r
4 \r
5 import com.ibm.wala.classLoader.IMethod;\r
6 import com.ibm.wala.ipa.callgraph.AnalysisCache;\r
7 import com.ibm.wala.ipa.callgraph.AnalysisOptions;\r
8 import com.ibm.wala.ipa.callgraph.AnalysisScope;\r
9 import com.ibm.wala.ipa.callgraph.CGNode;\r
10 import com.ibm.wala.ipa.callgraph.CallGraph;\r
11 import com.ibm.wala.ipa.callgraph.CallGraphBuilder;\r
12 import com.ibm.wala.ipa.callgraph.Entrypoint;\r
13 import com.ibm.wala.ipa.callgraph.impl.Util;\r
14 import com.ibm.wala.ipa.cha.ClassHierarchy;\r
15 import com.ibm.wala.util.config.AnalysisScopeReader;\r
16 import com.ibm.wala.util.io.FileProvider;\r
17 \r
18 import demo.util.DemoUtil;\r
19 import demo.util.MemoryInfo;\r
20 \r
21 public class ClassHierarchyPerformance {\r
22 \r
23         public static void main(String[] args) throws Exception {\r
24                 long start = System.currentTimeMillis();\r
25 \r
26                 AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(args[0], (new FileProvider()).getFile(DemoUtil.REGRESSION_EXCLUSIONS));\r
27                 ClassHierarchy cha = ClassHierarchy.make(scope);\r
28                 Iterable<Entrypoint> entrypoints = Util.makeMainEntrypoints(scope, cha);\r
29                 AnalysisOptions options = new AnalysisOptions(scope, entrypoints);\r
30                 CallGraphBuilder builder = Util.makeZeroCFABuilder(options, new AnalysisCache(), cha, scope);\r
31                 CallGraph cg = builder.makeCallGraph(options, null);\r
32                 for (CGNode caller: cg) {\r
33                         for (Iterator<CGNode> callees = cg.getSuccNodes(caller); callees.hasNext();) {\r
34                                 CGNode callee = callees.next();\r
35                                 IMethod callerMethod = caller.getMethod();\r
36                                 IMethod calleeMethod = callee.getMethod();\r
37 //                              System.out.println(callerMethod.toString() + " -> " + calleeMethod.toString());\r
38                         }\r
39                 }\r
40                 \r
41                 long end = System.currentTimeMillis();\r
42 \r
43                 System.err.println((end - start) + " [ms]");\r
44                 System.err.println(MemoryInfo.getMemoryInfo());\r
45         }\r
46 \r
47 }\r