refactoring to prepare for JDT front end
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2842 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
parent
9e91232b7c
commit
3719bfd410
|
@ -10,6 +10,7 @@ Require-Bundle: com.ibm.wala.core.tests,
|
|||
com.ibm.wala.cast,
|
||||
com.ibm.wala.core,
|
||||
org.eclipse.core.runtime,
|
||||
org.junit4
|
||||
org.junit4,
|
||||
com.ibm.wala.eclipse.tests
|
||||
Eclipse-LazyStart: true
|
||||
Export-Package: com.ibm.wala.cast.java.test
|
||||
|
|
|
@ -15,6 +15,7 @@ package com.ibm.wala.cast.java.test;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
@ -25,9 +26,20 @@ import java.util.Properties;
|
|||
import java.util.Set;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
import org.eclipse.core.internal.resources.Resource;
|
||||
import org.eclipse.core.internal.resources.Workspace;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IWorkspace;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.jdt.core.IJavaProject;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.ibm.wala.cast.java.client.JavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.cast.java.translator.jdt.EclipseSourceFileModule;
|
||||
import com.ibm.wala.classLoader.IClass;
|
||||
import com.ibm.wala.classLoader.IClassLoader;
|
||||
import com.ibm.wala.classLoader.IMethod;
|
||||
|
@ -35,6 +47,7 @@ import com.ibm.wala.classLoader.JarFileModule;
|
|||
import com.ibm.wala.classLoader.SourceDirectoryTreeModule;
|
||||
import com.ibm.wala.classLoader.SourceFileModule;
|
||||
import com.ibm.wala.core.tests.util.WalaTestCase;
|
||||
import com.ibm.wala.eclipse.tests.EclipseTestUtil;
|
||||
import com.ibm.wala.eclipse.util.EclipseProjectPath;
|
||||
import com.ibm.wala.ipa.callgraph.CGNode;
|
||||
import com.ibm.wala.ipa.callgraph.CallGraph;
|
||||
|
@ -55,10 +68,13 @@ import com.ibm.wala.util.strings.Atom;
|
|||
import com.ibm.wala.util.warnings.WalaException;
|
||||
|
||||
public abstract class IRTests extends WalaTestCase {
|
||||
public IRTests(String name) {
|
||||
public IRTests(String name, String projectName) {
|
||||
super(name);
|
||||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
protected final String projectName;
|
||||
|
||||
protected static String javaHomePath;
|
||||
|
||||
protected static String testSrcPath = "." + File.separator + "testSrc";
|
||||
|
@ -372,8 +388,11 @@ public abstract class IRTests extends WalaTestCase {
|
|||
return null;
|
||||
}
|
||||
|
||||
protected void populateScope(JavaSourceAnalysisEngine engine, Collection<String> sources, List<String> libs) throws IOException {
|
||||
|
||||
protected void populateScope(JavaSourceAnalysisEngine engine,
|
||||
Collection<String> sources,
|
||||
List<String> libs)
|
||||
throws IOException
|
||||
{
|
||||
boolean foundLib = false;
|
||||
for (String lib : libs) {
|
||||
File libFile = new File(lib);
|
||||
|
@ -384,14 +403,32 @@ public abstract class IRTests extends WalaTestCase {
|
|||
}
|
||||
Assertions._assert(foundLib, "couldn't find library file from " + libs);
|
||||
|
||||
IWorkspace w = null;
|
||||
IJavaProject project = null;
|
||||
try {
|
||||
if (projectName != null) {
|
||||
w = ResourcesPlugin.getWorkspace();
|
||||
project = EclipseTestUtil.getNamedProject(projectName);
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
// use Workspace only if it exists
|
||||
}
|
||||
|
||||
for (String srcFilePath : sources) {
|
||||
String srcFileName = srcFilePath.substring(srcFilePath.lastIndexOf(File.separator) + 1);
|
||||
File f = new File(srcFilePath);
|
||||
Assert.assertTrue(f.exists());
|
||||
if (f.isDirectory()) {
|
||||
engine.addSourceModule(new SourceDirectoryTreeModule(f));
|
||||
|
||||
if (w != null) {
|
||||
IFile file = project.getProject().getFile(srcFilePath);
|
||||
engine.addSourceModule(new EclipseSourceFileModule(file));
|
||||
|
||||
} else {
|
||||
engine.addSourceModule(new SourceFileModule(f, srcFileName));
|
||||
String srcFileName = srcFilePath.substring(srcFilePath.lastIndexOf(File.separator) + 1);
|
||||
File f = new File(srcFilePath);
|
||||
Assert.assertTrue(f.exists());
|
||||
if (f.isDirectory()) {
|
||||
engine.addSourceModule(new SourceDirectoryTreeModule(f));
|
||||
} else {
|
||||
engine.addSourceModule(new SourceFileModule(f, srcFileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
package com.ibm.wala.cast.java.test;
|
||||
|
||||
import com.ibm.wala.cast.java.client.JavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.cast.java.translator.polyglot.PolyglotJavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
|
||||
import com.ibm.wala.eclipse.util.EclipseProjectPath;
|
||||
import com.ibm.wala.ipa.callgraph.AnalysisScope;
|
||||
|
@ -21,11 +22,11 @@ import com.ibm.wala.ipa.cha.IClassHierarchy;
|
|||
public class JLexTest extends IRTests {
|
||||
|
||||
public JLexTest() {
|
||||
super("JLexTest");
|
||||
super("JLexTest", null);
|
||||
}
|
||||
|
||||
protected JavaSourceAnalysisEngine getAnalysisEngine(final String[] mainClassDescriptors) {
|
||||
JavaSourceAnalysisEngine engine = new JavaSourceAnalysisEngine() {
|
||||
JavaSourceAnalysisEngine engine = new PolyglotJavaSourceAnalysisEngine() {
|
||||
protected Iterable<Entrypoint> makeDefaultEntrypoints(AnalysisScope scope, IClassHierarchy cha) {
|
||||
return Util.makeMainEntrypoints(EclipseProjectPath.SOURCE_REF, cha, new String[] { "LJLex/Main" });
|
||||
}
|
||||
|
|
|
@ -23,24 +23,20 @@ import java.util.Set;
|
|||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.ibm.wala.cast.java.client.JavaSourceAnalysisEngine;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
|
||||
import com.ibm.wala.cast.java.ipa.slicer.AstJavaSlicer;
|
||||
import com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl;
|
||||
import com.ibm.wala.cast.java.ssa.EnclosingObjectReference;
|
||||
import com.ibm.wala.classLoader.IClass;
|
||||
import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
|
||||
import com.ibm.wala.core.tests.slicer.SlicerTest;
|
||||
import com.ibm.wala.eclipse.util.CancelException;
|
||||
import com.ibm.wala.eclipse.util.EclipseProjectPath;
|
||||
import com.ibm.wala.ipa.callgraph.AnalysisScope;
|
||||
import com.ibm.wala.ipa.callgraph.CGNode;
|
||||
import com.ibm.wala.ipa.callgraph.CallGraph;
|
||||
import com.ibm.wala.ipa.callgraph.Entrypoint;
|
||||
import com.ibm.wala.ipa.callgraph.impl.Util;
|
||||
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
|
||||
import com.ibm.wala.ipa.callgraph.propagation.LocalPointerKey;
|
||||
import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis;
|
||||
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||
import com.ibm.wala.ipa.slicer.SDG;
|
||||
import com.ibm.wala.ipa.slicer.Statement;
|
||||
import com.ibm.wala.ssa.SSAArrayLengthInstruction;
|
||||
|
@ -58,21 +54,16 @@ import com.ibm.wala.types.TypeReference;
|
|||
import com.ibm.wala.util.collections.Pair;
|
||||
import com.ibm.wala.util.strings.Atom;
|
||||
|
||||
public class JavaIRTests extends IRTests {
|
||||
public abstract class JavaIRTests extends IRTests {
|
||||
|
||||
public JavaIRTests(String name, String projectName) {
|
||||
super(name, projectName);
|
||||
}
|
||||
|
||||
public JavaIRTests(String name) {
|
||||
super(name);
|
||||
this(name, null);
|
||||
}
|
||||
|
||||
protected JavaSourceAnalysisEngine getAnalysisEngine(final String[] mainClassDescriptors) {
|
||||
JavaSourceAnalysisEngine engine = new JavaSourceAnalysisEngine() {
|
||||
protected Iterable<Entrypoint> makeDefaultEntrypoints(AnalysisScope scope, IClassHierarchy cha) {
|
||||
return Util.makeMainEntrypoints(EclipseProjectPath.SOURCE_REF, cha, mainClassDescriptors);
|
||||
}
|
||||
};
|
||||
engine.setExclusionsFile(CallGraphTestUtil.REGRESSION_EXCLUSIONS);
|
||||
return engine;
|
||||
}
|
||||
|
||||
|
||||
protected String singleInputForTest() {
|
||||
return getName().substring(4) + ".java";
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package com.ibm.wala.cast.java.test;
|
||||
|
||||
import com.ibm.wala.cast.java.client.JavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.cast.java.translator.polyglot.PolyglotJavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
|
||||
import com.ibm.wala.eclipse.util.EclipseProjectPath;
|
||||
import com.ibm.wala.ipa.callgraph.AnalysisScope;
|
||||
import com.ibm.wala.ipa.callgraph.Entrypoint;
|
||||
import com.ibm.wala.ipa.callgraph.impl.Util;
|
||||
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||
|
||||
public class PolyglotJavaIRTests extends JavaIRTests {
|
||||
|
||||
public PolyglotJavaIRTests(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaSourceAnalysisEngine getAnalysisEngine(final String[] mainClassDescriptors) {
|
||||
JavaSourceAnalysisEngine engine = new PolyglotJavaSourceAnalysisEngine() {
|
||||
protected Iterable<Entrypoint> makeDefaultEntrypoints(AnalysisScope scope, IClassHierarchy cha) {
|
||||
return Util.makeMainEntrypoints(EclipseProjectPath.SOURCE_REF, cha, mainClassDescriptors);
|
||||
}
|
||||
};
|
||||
engine.setExclusionsFile(CallGraphTestUtil.REGRESSION_EXCLUSIONS);
|
||||
return engine;
|
||||
}
|
||||
|
||||
}
|
|
@ -16,6 +16,7 @@ import com.ibm.wala.cast.java.client.JavaSourceAnalysisEngine;
|
|||
import com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator;
|
||||
import com.ibm.wala.cast.java.translator.polyglot.IRTranslatorExtension;
|
||||
import com.ibm.wala.cast.java.translator.polyglot.JavaIRTranslatorExtension;
|
||||
import com.ibm.wala.cast.java.translator.polyglot.PolyglotJavaSourceAnalysisEngine;
|
||||
import com.ibm.wala.cast.tree.CAst;
|
||||
import com.ibm.wala.cast.tree.impl.CAstRewriter;
|
||||
import com.ibm.wala.cast.tree.impl.CAstRewriterFactory;
|
||||
|
@ -36,7 +37,7 @@ import com.ibm.wala.util.strings.Atom;
|
|||
public class SyncDuplicatorTest extends IRTests {
|
||||
|
||||
public SyncDuplicatorTest() {
|
||||
super("SyncDuplicatorTest");
|
||||
super("SyncDuplicatorTest", null);
|
||||
}
|
||||
|
||||
private final static CallSiteReference testMethod = CallSiteReference.make(0, MethodReference.findOrCreate(TypeReference
|
||||
|
@ -44,7 +45,7 @@ public class SyncDuplicatorTest extends IRTests {
|
|||
Descriptor.findOrCreateUTF8("(Ljava/lang/Object;)Z")), IInvokeInstruction.Dispatch.STATIC);
|
||||
|
||||
protected JavaSourceAnalysisEngine getAnalysisEngine(final String[] mainClassDescriptors) {
|
||||
JavaSourceAnalysisEngine engine = new JavaSourceAnalysisEngine() {
|
||||
JavaSourceAnalysisEngine engine = new PolyglotJavaSourceAnalysisEngine() {
|
||||
protected Iterable<Entrypoint> makeDefaultEntrypoints(AnalysisScope scope, IClassHierarchy cha) {
|
||||
return Util.makeMainEntrypoints(EclipseProjectPath.SOURCE_REF, cha, mainClassDescriptors);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
package com.ibm.wala.cast.java.test;
|
||||
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
import org.eclipse.ui.IStartup;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue