Updates for call graph slice view (latest is click constructor fix) and
[eclipsethinslicer.git] / Svelte / src / edu / berkeley / cs / bodik / svelte / NewSlicingDriver.java
blob1910ad22f6962e42ace14cf93623c487a0c90604
1 package edu.berkeley.cs.bodik.svelte;
3 import java.io.IOException;
4 import java.util.ArrayList;
6 import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
7 import com.ibm.wala.ipa.callgraph.CGNode;
8 import com.ibm.wala.ipa.callgraph.CallGraph;
9 import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis;
11 public class NewSlicingDriver {
14 public static SvelteAnalysisEngine makeCGandPA() {
16 // Set up the scope
17 String sourcedirectory = "/home/evan/myproj/src/";
18 String sdexclusions[] = {
19 "src/BadFile.java",
20 "src/BigFile.java",
22 String jarfiles[] = {
23 "/home/evan/myproj/class/myneeded.jar"
25 String mainClassName = "polyglot.main.Main";
27 SvelteAnalysisEngine se = new SvelteAnalysisEngine();
28 se.setExclusionsFile(CallGraphTestUtil.REGRESSION_EXCLUSIONS);
31 try {
32 se.addJavaDir("/home/evan/myproj/src/");
33 // se.addSourceDirExcepting(sourcedirecory, sdexclusions);
34 se.addJars(jarfiles);
35 se.findEntrypointFromClassnameOfMain(mainClassName);
36 } catch ( IOException e ) {
37 e.printStackTrace();
39 // builds if not already build
40 // se.rebuildCallGraph();
42 return se;
45 /**
46 * @param args
48 public static void main(String[] args) {
49 SvelteAnalysisEngine se = makeCGandPA(); // load source & binary files to make a CG and PA
50 CallGraph cg = se.getCallGraph();
51 PointerAnalysis pa = se.getPointerAnalysis();
53 // dump IR
54 // CallGraphUtils.dumpIR(cg, assertReachable);
56 int linenum = 10;
57 String filename = "/home/evan/myproj/src/MyClass.java";
58 int slicerType = Slicing.CI_THIN_SLICE;
60 // find seed statements
61 CGNode cgn = CallGraphUtils.findMethodIncludingLineNum(cg,linenum,filename);
62 Slice seed = new Slice(CGNodeUtils.getStatementsFromLineNumber(cgn, linenum));
63 seed.dumpConcise();
65 // actual slicing.
66 Slice s = Slicing.doSlice(slicerType,cg,pa,seed);
67 System.out.println("here's the slice:");
68 s.dump();
69 ArrayList<SourcePosition> hpos = s.getPositions(true);
71 //return hpos;