From 824cd3db241c969476298b72793b24f0616a6682 Mon Sep 17 00:00:00 2001 From: Julian Dolby Date: Wed, 7 Aug 2013 15:15:20 -0400 Subject: [PATCH] utility to use Eclipse to find JS prologue files for analysis --- .../source/com/ibm/wala/ide/util/JsdtUtil.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JsdtUtil.java b/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JsdtUtil.java index 589f3fdf5..1e3d1a633 100644 --- a/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JsdtUtil.java +++ b/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JsdtUtil.java @@ -10,6 +10,7 @@ *******************************************************************************/ package com.ibm.wala.ide.util; +import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.Iterator; @@ -21,6 +22,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Plugin; import org.eclipse.wst.jsdt.core.IFunction; import org.eclipse.wst.jsdt.core.IJavaScriptElement; import org.eclipse.wst.jsdt.core.IJavaScriptProject; @@ -40,6 +42,7 @@ import org.eclipse.wst.jsdt.internal.corext.callhierarchy.CallHierarchy; import org.eclipse.wst.jsdt.internal.corext.callhierarchy.MethodWrapper; import com.ibm.wala.cast.ipa.callgraph.CAstAnalysisScope; +import com.ibm.wala.cast.js.JavaScriptPlugin; import com.ibm.wala.cast.js.ipa.callgraph.JSCallGraphUtil; import com.ibm.wala.cast.js.loader.JavaScriptLoader; import com.ibm.wala.cast.js.translator.CAstRhinoTranslatorFactory; @@ -54,9 +57,21 @@ import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.functions.Function; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph; +import com.ibm.wala.util.io.FileProvider; public class JsdtUtil { + public static File getProlgueFile(String file, Plugin plugin) { + try { + FileProvider fileProvider = new EclipseFileProvider(plugin!= null? plugin: JavaScriptPlugin.getDefault()); + JavaScriptLoader.addBootstrapFile(file); + return fileProvider.getFile("dat/" + file, JsdtUtil.class.getClassLoader()); + } catch (IOException e) { + assert false : "cannot find " + file; + return null; + } + } + private static final boolean useCreateASTs = false; public static class CGInfo { @@ -67,7 +82,7 @@ public class JsdtUtil { public static Set getJavaScriptCodeFromProject(String project) throws IOException, CoreException { IJavaScriptProject p = JavaScriptHeadlessUtil.getJavaScriptProjectFromWorkspace(project); JSCallGraphUtil.setTranslatorFactory(new CAstRhinoTranslatorFactory()); - AnalysisScope s = JavaScriptEclipseProjectPath.make(p).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS))); + AnalysisScope s = JavaScriptEclipseProjectPath.make(p, Collections.EMPTY_SET).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS))); List modules = s.getModules(JavaScriptTypes.jsLoader); Set mes = HashSetFactory.make();