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() {
17 String sourcedirectory
= "/home/evan/myproj/src/";
18 String sdexclusions
[] = {
23 "/home/evan/myproj/class/myneeded.jar"
25 String mainClassName
= "polyglot.main.Main";
27 SvelteAnalysisEngine se
= new SvelteAnalysisEngine();
28 se
.setExclusionsFile(CallGraphTestUtil
.REGRESSION_EXCLUSIONS
);
32 se
.addJavaDir("/home/evan/myproj/src/");
33 // se.addSourceDirExcepting(sourcedirecory, sdexclusions);
35 se
.findEntrypointFromClassnameOfMain(mainClassName
);
36 } catch ( IOException e
) {
39 // builds if not already build
40 // se.rebuildCallGraph();
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();
54 // CallGraphUtils.dumpIR(cg, assertReachable);
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
));
66 Slice s
= Slicing
.doSlice(slicerType
,cg
,pa
,seed
);
67 System
.out
.println("here's the slice:");
69 ArrayList
<SourcePosition
> hpos
= s
.getPositions(true);