diff --git a/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs index aa57fa7df..4c8bbd5ba 100644 --- a/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs @@ -6,6 +6,7 @@ org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annota org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.7 diff --git a/com.ibm.wala.cast.java.test.data/META-INF/MANIFEST.MF b/com.ibm.wala.cast.java.test.data/META-INF/MANIFEST.MF index e46e9112f..4637dac30 100644 --- a/com.ibm.wala.cast.java.test.data/META-INF/MANIFEST.MF +++ b/com.ibm.wala.cast.java.test.data/META-INF/MANIFEST.MF @@ -4,5 +4,4 @@ Bundle-Name: Data Plug-in Bundle-SymbolicName: com.ibm.wala.cast.java.test.data Bundle-Version: 1.3.4.qualifier Bundle-Vendor: IBM -Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/analysis/typeInference/AstJavaTypeInference.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/analysis/typeInference/AstJavaTypeInference.java index 431187e20..a115cfc6e 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/analysis/typeInference/AstJavaTypeInference.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/analysis/typeInference/AstJavaTypeInference.java @@ -17,7 +17,7 @@ import com.ibm.wala.analysis.typeInference.PrimitiveType; import com.ibm.wala.analysis.typeInference.TypeAbstraction; import com.ibm.wala.analysis.typeInference.TypeVariable; import com.ibm.wala.cast.analysis.typeInference.AstTypeInference; -import com.ibm.wala.cast.ir.ssa.AstConstants; +import com.ibm.wala.cast.ir.ssa.CAstBinaryOp; import com.ibm.wala.cast.java.ssa.AstJavaInstructionVisitor; import com.ibm.wala.cast.java.ssa.AstJavaInvokeInstruction; import com.ibm.wala.cast.java.ssa.EnclosingObjectReference; @@ -40,8 +40,8 @@ public class AstJavaTypeInference extends AstTypeInference { public void visitBinaryOp(SSABinaryOpInstruction instruction) { if (doPrimitives) { IBinaryOpInstruction.IOperator op = instruction.getOperator(); - if (op == AstConstants.BinaryOp.EQ || op == AstConstants.BinaryOp.NE || op == AstConstants.BinaryOp.LT - || op == AstConstants.BinaryOp.GE || op == AstConstants.BinaryOp.GT || op == AstConstants.BinaryOp.LE) { + if (op == CAstBinaryOp.EQ || op == CAstBinaryOp.NE || op == CAstBinaryOp.LT + || op == CAstBinaryOp.GE || op == CAstBinaryOp.GT || op == CAstBinaryOp.LE) { result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); } else { result = new PrimAndStringOp(); diff --git a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/rhino/callgraph/fieldbased/test/AbstractFieldBasedTest.java b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/rhino/callgraph/fieldbased/test/AbstractFieldBasedTest.java index 2d221d2a2..ea6719b75 100644 --- a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/rhino/callgraph/fieldbased/test/AbstractFieldBasedTest.java +++ b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/rhino/callgraph/fieldbased/test/AbstractFieldBasedTest.java @@ -42,7 +42,7 @@ public abstract class AbstractFieldBasedTest extends TestJSCallGraphShape { protected JSCallGraph runTest(URL url, Object[][] assertions, BuilderType... builderTypes) throws IOException, WalaException, Error, CancelException { JSCallGraph cg = null; for(BuilderType builderType : builderTypes) { - ProgressMaster monitor = ProgressMaster.make(new NullProgressMonitor(), 30000, true); + ProgressMaster monitor = ProgressMaster.make(new NullProgressMonitor(), 45000, true); try { cg = util.buildCG(url, builderType, monitor, false).fst; System.err.println(cg); diff --git a/com.ibm.wala.cast.js.rhino.test/launchers/TestMozillaBugPagesRhino.launch b/com.ibm.wala.cast.js.rhino.test/launchers/TestMozillaBugPagesRhino.launch index b3f21cb55..e979be029 100644 --- a/com.ibm.wala.cast.js.rhino.test/launchers/TestMozillaBugPagesRhino.launch +++ b/com.ibm.wala.cast.js.rhino.test/launchers/TestMozillaBugPagesRhino.launch @@ -1,10 +1,10 @@ - + - + @@ -14,6 +14,7 @@ + diff --git a/com.ibm.wala.cast.js.rhino.test/launchers/com.ibm.wala.cast.js.rhino.test-JUnit.launch b/com.ibm.wala.cast.js.rhino.test/launchers/com.ibm.wala.cast.js.rhino.test-JUnit.launch index 82960232b..a0159dc63 100644 --- a/com.ibm.wala.cast.js.rhino.test/launchers/com.ibm.wala.cast.js.rhino.test-JUnit.launch +++ b/com.ibm.wala.cast.js.rhino.test/launchers/com.ibm.wala.cast.js.rhino.test-JUnit.launch @@ -22,7 +22,7 @@ - + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js index 7ef43dd52..9c99218d7 100755 --- a/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js @@ -1,4 +1,4 @@ -// $Id: drupal.js,v 1.41.2.4 2009/07/21 08:59:10 goba Exp $ +// $Id: drupal.js,v 1.41.2.4 2009/07/21 08:59:10 goba Exp $ var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} }; diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/loops.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/loops.js index 9d06ef9c5..4379db41a 100644 --- a/com.ibm.wala.cast.js.test.data/examples-src/tests/loops.js +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/loops.js @@ -12,5 +12,5 @@ var fs2 = []; } })(fs1, fs2); -fs[fs2[2]](); -fs[fs2[3]](); +(fs[fs2[2]])(); +(fs[fs2[3]])(); diff --git a/com.ibm.wala.cast.js.test/tests/TestSimpleCallGraphShape.launch b/com.ibm.wala.cast.js.test/tests/TestSimpleCallGraphShape.launch index 65139c5af..4ca1ceb67 100755 --- a/com.ibm.wala.cast.js.test/tests/TestSimpleCallGraphShape.launch +++ b/com.ibm.wala.cast.js.test/tests/TestSimpleCallGraphShape.launch @@ -10,10 +10,12 @@ + + diff --git a/com.ibm.wala.cast.test/.launchConfigurations/com.ibm.wala.cast.test-JUnit.launch b/com.ibm.wala.cast.test/.launchConfigurations/com.ibm.wala.cast.test-JUnit.launch index 90937f342..53e757ca6 100644 --- a/com.ibm.wala.cast.test/.launchConfigurations/com.ibm.wala.cast.test-JUnit.launch +++ b/com.ibm.wala.cast.test/.launchConfigurations/com.ibm.wala.cast.test-JUnit.launch @@ -11,7 +11,7 @@ - + diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstConstants.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstBinaryOp.java similarity index 73% rename from com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstConstants.java rename to com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstBinaryOp.java index ff47576d5..f1254885f 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstConstants.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstBinaryOp.java @@ -13,23 +13,11 @@ package com.ibm.wala.cast.ir.ssa; import com.ibm.wala.shrikeBT.IBinaryOpInstruction; import com.ibm.wala.shrikeBT.IUnaryOpInstruction; -public interface AstConstants { - - public enum BinaryOp implements IBinaryOpInstruction.IOperator { +public enum CAstBinaryOp implements IBinaryOpInstruction.IOperator { CONCAT, EQ, NE, LT, GE, GT, LE, STRICT_EQ, STRICT_NE; @Override public String toString() { return super.toString().toLowerCase(); } - } - - public enum UnaryOp implements IUnaryOpInstruction.IOperator { - MINUS, BITNOT, PLUS; - - @Override - public String toString() { - return super.toString().toLowerCase(); - } - } } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstUnaryOp.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstUnaryOp.java new file mode 100644 index 000000000..05de50f3f --- /dev/null +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/CAstUnaryOp.java @@ -0,0 +1,24 @@ +/****************************************************************************** + * Copyright (c) 2002 - 2006 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *****************************************************************************/ +package com.ibm.wala.cast.ir.ssa; + +import com.ibm.wala.shrikeBT.IBinaryOpInstruction; +import com.ibm.wala.shrikeBT.IUnaryOpInstruction; + + + public enum CAstUnaryOp implements IUnaryOpInstruction.IOperator { + MINUS, BITNOT, PLUS; + + @Override + public String toString() { + return super.toString().toLowerCase(); + } + } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java index 69f030bdc..1e06b25e4 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java @@ -23,7 +23,6 @@ import java.util.Set; import com.ibm.wala.cast.ir.ssa.AssignInstruction; import com.ibm.wala.cast.ir.ssa.AstAssertInstruction; -import com.ibm.wala.cast.ir.ssa.AstConstants; import com.ibm.wala.cast.ir.ssa.AstEchoInstruction; import com.ibm.wala.cast.ir.ssa.AstGlobalRead; import com.ibm.wala.cast.ir.ssa.AstGlobalWrite; @@ -31,6 +30,8 @@ import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalAccess.Access; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.CAstBinaryOp; +import com.ibm.wala.cast.ir.ssa.CAstUnaryOp; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.cast.ir.ssa.SSAConversion; @@ -3018,13 +3019,13 @@ public abstract class AstTranslator extends CAstVisitor - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/com.ibm.wala.core.tests/launchers/demandpa.launch b/com.ibm.wala.core.tests/launchers/demandpa.launch deleted file mode 100644 index 3abef1bf4..000000000 --- a/com.ibm.wala.core.tests/launchers/demandpa.launch +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - - + - + diff --git a/com.ibm.wala.dalvik.test/pom.xml b/com.ibm.wala.dalvik.test/pom.xml index 54750755e..4e4ee8aca 100644 --- a/com.ibm.wala.dalvik.test/pom.xml +++ b/com.ibm.wala.dalvik.test/pom.xml @@ -75,7 +75,7 @@ junit junit - 4.11 + 4.10 test diff --git a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/DalvikTestBase.java b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/DalvikTestBase.java index 85bc51273..cd9e85dbd 100644 --- a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/DalvikTestBase.java +++ b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/DalvikTestBase.java @@ -3,12 +3,10 @@ package com.ibm.wala.dalvik.test; import static com.ibm.wala.properties.WalaProperties.ANDROID_RT_JAR; import java.io.File; +import java.io.FileFilter; import java.io.FilenameFilter; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -61,33 +59,37 @@ public abstract class DalvikTestBase extends DynamicCallGraphTestBase { } public static URI[] androidLibs() { + System.err.println(System.getProperty("java.vm.name")); if ("Dalvik".equals(System.getProperty("java.vm.name"))) { - try { - return new URI[]{ - new URL("file:///system/framework/core.jar").toURI(), - new URL("file:///system/framework/framework.jar").toURI(), - new URL("file:///system/framework/framework2.jar").toURI(), - new URL("file:///system/framework/framework3.jar").toURI() - }; - } catch (MalformedURLException e) { - assert false : e; - return null; - } catch (URISyntaxException e) { - assert false : e; - return null; - } + List libs = new ArrayList(); + for(File f : new File("/system/framework/").listFiles(new FileFilter() { + @Override + public boolean accept(File pathname) { + String name = pathname.getName(); + return + (name.startsWith("core") || name.startsWith("framework")) && + (name.endsWith("jar") || name.endsWith("apk")); + } + })) + { + System.out.println("adding " + f); + libs.add(f.toURI()); + } + return libs.toArray(new URI[ libs.size() ]); } else { List libs = new ArrayList(); try { for(File lib : new File(walaProperties.getProperty(ANDROID_RT_JAR)).listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { - return name.endsWith("dex") || name.endsWith("jar"); + return name.endsWith("dex") || name.endsWith("jar") || name.endsWith("apk"); } })) { + System.out.println("adding " + lib); libs.add(lib.toURI()); } } catch (Exception e) { + System.out.println("unexpected " + e); for(String l : WalaProperties.getJ2SEJarFiles()) { libs.add(new File(l).toURI()); } diff --git a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DalvikCallGraphTestBase.java b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DalvikCallGraphTestBase.java index 2ae791171..b0b23f38d 100644 --- a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DalvikCallGraphTestBase.java +++ b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DalvikCallGraphTestBase.java @@ -15,6 +15,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.net.URI; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -43,7 +44,6 @@ import com.ibm.wala.ipa.callgraph.propagation.cfa.DefaultSSAInterpreter; import com.ibm.wala.ipa.cha.ClassHierarchy; import com.ibm.wala.ipa.cha.ClassHierarchyException; import com.ibm.wala.ipa.cha.IClassHierarchy; -import com.ibm.wala.properties.WalaProperties; import com.ibm.wala.shrikeBT.analysis.Analyzer.FailureException; import com.ibm.wala.shrikeCT.InvalidClassFileException; import com.ibm.wala.ssa.SSAInstruction; @@ -55,7 +55,6 @@ import com.ibm.wala.util.CancelException; import com.ibm.wala.util.MonitorUtil.IProgressMonitor; import com.ibm.wala.util.NullProgressMonitor; import com.ibm.wala.util.Predicate; -import com.ibm.wala.util.WalaException; import com.ibm.wala.util.collections.FilterIterator; import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.MapIterator; @@ -99,18 +98,30 @@ public class DalvikCallGraphTestBase extends DalvikTestBase { run(mainClass.substring(1).replace('/', '.'), "LibraryExclusions.txt", args); } - public static Pair> makeAPKCallGraph(String apkFileName) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { - return makeAPKCallGraph(apkFileName, new NullProgressMonitor()); + public static Pair> makeAPKCallGraph(String apkFile) throws ClassHierarchyException, IllegalArgumentException, IOException, CancelException { + return makeAPKCallGraph(apkFile, androidLibs()); + } + + public static Pair> makeAPKCallGraph(String apkFileName, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { + return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), androidLibs); } - public static Pair> makeAPKCallGraph(String apkFileName, ReflectionOptions options) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { - return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options); + public static Pair> makeAPKCallGraph(String apkFileName, ReflectionOptions options) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { + return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options, androidLibs()); + } + + public static Pair> makeAPKCallGraph(String apkFileName, ReflectionOptions options, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { + return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options, androidLibs); } - public static Pair> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { - return makeAPKCallGraph(apkFileName, monitor, ReflectionOptions.NONE); + public static Pair> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { + return makeAPKCallGraph(apkFileName, monitor, ReflectionOptions.NONE, androidLibs); } + public static Pair> makeAPKCallGraph(String absolutePath, IProgressMonitor pm, ReflectionOptions none) throws ClassHierarchyException, IllegalArgumentException, IOException, CancelException { + return makeAPKCallGraph(absolutePath, pm, none, androidLibs()); + } + @SuppressWarnings("unused") private static SSAContextInterpreter makeDefaultInterpreter(AnalysisOptions options, AnalysisCache cache) { return new DefaultSSAInterpreter(options, cache) { @@ -137,13 +148,13 @@ public class DalvikCallGraphTestBase extends DalvikTestBase { }; } - public static Pair> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, ReflectionOptions policy) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { + public static Pair> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, ReflectionOptions policy, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { AnalysisScope scope = AndroidAnalysisScope.setUpAndroidAnalysisScope( new File(apkFileName).toURI(), "AndroidRegressionExclusions.txt", CallGraphTestUtil.class.getClassLoader(), - androidLibs()); + androidLibs); final IClassHierarchy cha = ClassHierarchy.make(scope); @@ -199,4 +210,5 @@ public class DalvikCallGraphTestBase extends DalvikTestBase { return Pair.make(callGraph, ptrAnalysis); } + } diff --git a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DroidBenchCGTest.java b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DroidBenchCGTest.java index 28d507a4e..142d5cb3c 100644 --- a/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DroidBenchCGTest.java +++ b/com.ibm.wala.dalvik.test/source/com/ibm/wala/dalvik/test/callGraph/DroidBenchCGTest.java @@ -77,8 +77,9 @@ public abstract class DroidBenchCGTest extends DalvikCallGraphTestBase { uncalledFunctions.put("VirtualDispatch2.apk", x); } - private void assertUserCodeReachable(CallGraph cg) throws InvalidClassFileException { - for(Iterator clss = cg.getClassHierarchy().getLoader(ClassLoaderReference.Application).iterateAllClasses(); + public static Set assertUserCodeReachable(CallGraph cg, Set uncalled) throws InvalidClassFileException { + Set result = HashSetFactory.make(); + for(Iterator clss = cg.getClassHierarchy().getLoader(ClassLoaderReference.Application).iterateAllClasses(); clss.hasNext(); ) { IClass cls = clss.next(); @@ -88,12 +89,16 @@ public abstract class DroidBenchCGTest extends DalvikCallGraphTestBase { if (! cls.getName().toString().startsWith("Landroid") && ! cls.getName().toString().equals("Lde/ecspride/R$styleable")) { for(IMethod m : cls.getDeclaredMethods()) { if (!m.isInit() && !m.isAbstract() && !uncalled.contains(m.getReference())) { - Assert.assertFalse(m + "(" + m.getSourcePosition(0) + ") cannot be called in " + apkFile, cg.getNodes(m.getReference()).isEmpty()); - System.err.println("found " + m); + if (! cg.getNodes(m.getReference()).isEmpty()) { + System.err.println("found " + m); + } else { + result.add(m); + } } } } } + return result; } private final String apkFile; @@ -110,11 +115,12 @@ public abstract class DroidBenchCGTest extends DalvikCallGraphTestBase { System.err.println("testing " + apkFile + "..."); Pair> x = makeAPKCallGraph(apkFile, ReflectionOptions.ONE_FLOW_TO_CASTS_APPLICATION_GET_METHOD); //System.err.println(x.fst); - assertUserCodeReachable(x.fst); + Set bad = assertUserCodeReachable(x.fst, uncalled); + Assert.assertTrue(bad + " should be empty", bad.isEmpty()); System.err.println("...success testing " + apkFile); } - private static final Set skipTests = HashSetFactory.make(); + private static final Set skipTests = HashSetFactory.make(); static { // serialization issues skipTests.add("ServiceCommunication1.apk"); diff --git a/com.ibm.wala.dalvik/.classpath b/com.ibm.wala.dalvik/.classpath index d8fd74849..783737791 100644 --- a/com.ibm.wala.dalvik/.classpath +++ b/com.ibm.wala.dalvik/.classpath @@ -3,12 +3,12 @@ + + - - diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/DexFileModule.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/DexFileModule.java index 1392a1734..fff5f092e 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/DexFileModule.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/DexFileModule.java @@ -52,6 +52,7 @@ import java.io.IOException; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; +import java.util.jar.JarFile; import org.jf.dexlib.ClassDefItem; import org.jf.dexlib.DexFile; @@ -61,6 +62,7 @@ import org.slf4j.LoggerFactory; import com.ibm.wala.classLoader.Module; import com.ibm.wala.classLoader.ModuleEntry; +import com.ibm.wala.util.io.TemporaryFile; /** * A module which is a wrapper around .dex and .apk file. @@ -73,12 +75,35 @@ public class DexFileModule implements Module { private final DexFile dexfile; private final Collection entries; + public static DexFileModule make(File f) throws IllegalArgumentException, IOException { + if (f.getName().endsWith("jar")) { + return new DexFileModule(new JarFile(f)); + } else { + return new DexFileModule(f); + } + } + + private static File tf(JarFile f) { + String name = f.getName(); + if (name.indexOf('/') >= 0) { + name = name.substring(name.lastIndexOf('/')+1); + } + File tf = new File(System.getProperty("java.io.tmpdir") + "/" + name + "_classes.dex"); + tf.deleteOnExit(); + System.err.println("using " + tf); + return tf; + } + + private DexFileModule(JarFile f) throws IllegalArgumentException, IOException { + this(TemporaryFile.streamToFile(tf(f), f.getInputStream(f.getEntry("classes.dex")))); + } + /** * @param f * the .dex or .apk file * @throws IllegalArgumentException */ - public DexFileModule(File f) throws IllegalArgumentException { + private DexFileModule(File f) throws IllegalArgumentException { try { dexfile = new DexFile(f); } catch (IOException e) { diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/WDexClassLoaderImpl.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/WDexClassLoaderImpl.java index c9dace4ce..4ea8eeb43 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/WDexClassLoaderImpl.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/classLoader/WDexClassLoaderImpl.java @@ -153,7 +153,7 @@ public class WDexClassLoaderImpl extends ClassLoaderImpl { ModuleEntry entry = (ModuleEntry) it.next(); if (entry instanceof DexModuleEntry) { result.add(entry); - } + } } return result; } diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryLiteralOperation.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryLiteralOperation.java index bb69dc50c..8619805bb 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryLiteralOperation.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryLiteralOperation.java @@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions; import org.jf.dexlib.Code.Opcode; -import com.ibm.wala.cast.ir.ssa.AstConstants; +import com.ibm.wala.cast.ir.ssa.CAstBinaryOp; import com.ibm.wala.dalvik.classLoader.DexIMethod; import com.ibm.wala.dalvik.classLoader.Literal; import com.ibm.wala.shrikeBT.IBinaryOpInstruction; @@ -90,21 +90,21 @@ public class BinaryLiteralOperation extends Instruction { switch(op) { case CMPL_FLOAT: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_FLOAT: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_DOUBLE: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_DOUBLE: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_LONG: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_LONG: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_INT: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_INT: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case ADD_INT: return IBinaryOpInstruction.Operator.ADD; case RSUB_INT: diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryOperation.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryOperation.java index 9c59461a4..964040a2a 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryOperation.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/BinaryOperation.java @@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions; import org.jf.dexlib.Code.Opcode; -import com.ibm.wala.cast.ir.ssa.AstConstants; +import com.ibm.wala.cast.ir.ssa.CAstBinaryOp; import com.ibm.wala.dalvik.classLoader.DexIMethod; import com.ibm.wala.shrikeBT.IBinaryOpInstruction; import com.ibm.wala.shrikeBT.IShiftInstruction; @@ -89,21 +89,21 @@ public class BinaryOperation extends Instruction { switch(op) { case CMPL_FLOAT: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_FLOAT: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_DOUBLE: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_DOUBLE: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_LONG: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_LONG: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case CMPL_INT: - return AstConstants.BinaryOp.LT; + return CAstBinaryOp.LT; case CMPG_INT: - return AstConstants.BinaryOp.GT; + return CAstBinaryOp.GT; case ADD_INT: return IBinaryOpInstruction.Operator.ADD; case SUB_INT: diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/UnaryOperation.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/UnaryOperation.java index a88252ab0..c496c4300 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/UnaryOperation.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/instructions/UnaryOperation.java @@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions; import org.jf.dexlib.Code.Opcode; -import com.ibm.wala.cast.ir.ssa.AstConstants; +import com.ibm.wala.cast.ir.ssa.CAstUnaryOp; import com.ibm.wala.dalvik.classLoader.DexIMethod; import com.ibm.wala.shrikeBT.IUnaryOpInstruction; import com.ibm.wala.shrikeBT.IUnaryOpInstruction.IOperator; @@ -119,15 +119,15 @@ public class UnaryOperation extends Instruction { { // SSA unary ops case NOT: - return AstConstants.UnaryOp.BITNOT; + return CAstUnaryOp.BITNOT; case NEGINT: return IUnaryOpInstruction.Operator.NEG; case NOTINT: - return AstConstants.UnaryOp.BITNOT; + return CAstUnaryOp.BITNOT; case NEGLONG: return IUnaryOpInstruction.Operator.NEG; case NOTLONG: - return AstConstants.UnaryOp.BITNOT; + return CAstUnaryOp.BITNOT; case NEGFLOAT: return IUnaryOpInstruction.Operator.NEG; case NEGDOUBLE: diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/util/config/DexAnalysisScopeReader.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/util/config/DexAnalysisScopeReader.java index 3b8a1a8c7..be0d2e556 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/util/config/DexAnalysisScopeReader.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/dex/util/config/DexAnalysisScopeReader.java @@ -89,10 +89,8 @@ public class DexAnalysisScopeReader extends AnalysisScopeReader { ClassLoaderReference loader = scope.getLoader(AnalysisScope.APPLICATION); final String path = classPath.getPath(); - if (path.endsWith(".jar")) { - scope.addToScope(loader, new JarFile(new File(classPath))); - } else if (path.endsWith(".apk") || path.endsWith(".dex")) { - scope.addToScope(loader, new DexFileModule(new File(classPath))); + if (path.endsWith(".jar") || path.endsWith(".apk") || path.endsWith(".dex")) { + scope.addToScope(loader, DexFileModule.make(new File(classPath))); } else { throw new IOException( "could not determine type of classpath from file extension: " diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/AndroidAnalysisScope.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/AndroidAnalysisScope.java index 0adbd8bd1..5859ac0ea 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/AndroidAnalysisScope.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/AndroidAnalysisScope.java @@ -47,8 +47,9 @@ public class AndroidAnalysisScope { for(URI al : androidLib) { try { - scope.addToScope(ClassLoaderReference.Primordial, new DexFileModule(new File(al))); + scope.addToScope(ClassLoaderReference.Primordial, DexFileModule.make(new File(al))); } catch (Exception e) { + e.printStackTrace(); scope.addToScope(ClassLoaderReference.Primordial, new JarFileModule(new JarFile(new File(al)))); } } @@ -58,7 +59,7 @@ public class AndroidAnalysisScope { scope.setLoaderImpl(ClassLoaderReference.Application, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); - scope.addToScope(ClassLoaderReference.Application, new DexFileModule(new File(classpath))); + scope.addToScope(ClassLoaderReference.Application, DexFileModule.make(new File(classpath))); return scope; } @@ -79,12 +80,11 @@ public class AndroidAnalysisScope { String[] paths = classPath.split(File.pathSeparator); for (int i = 0; i < paths.length; i++) { - if (paths[i].endsWith(".jar")) { // handle jar file - scope.addToScope(loader, new JarFile(paths[i])); - } else if (paths[i].endsWith(".apk") + if (paths[i].endsWith(".jar") + || paths[i].endsWith(".apk") || paths[i].endsWith(".dex")) { // Handle android file. File f = new File(paths[i]); - scope.addToScope(loader, new DexFileModule(f)); + scope.addToScope(loader, DexFileModule.make(f)); } else { File f = new File(paths[i]); if (f.isDirectory()) { // handle directory FIXME not working diff --git a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/androidEntryPoints/ActivityEP.java b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/androidEntryPoints/ActivityEP.java index e0f8f85b9..321a8442c 100644 --- a/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/androidEntryPoints/ActivityEP.java +++ b/com.ibm.wala.dalvik/src/com/ibm/wala/dalvik/util/androidEntryPoints/ActivityEP.java @@ -946,6 +946,17 @@ public final class ActivityEP { } )); + public static final AndroidPossibleEntryPoint onSharedPreferenceChanged = new AndroidPossibleEntryPoint(AndroidComponent.ACTIVITY, + "onSharedPreferenceChanged", + ExecutionOrder.between( // TODO: Find a nice position + new AndroidEntryPoint.IExecutionOrder[] { + onStop + }, + new AndroidEntryPoint.IExecutionOrder[] { + onRestart + } + )); + /** * This method is called before pausing */ @@ -1123,6 +1134,7 @@ public final class ActivityEP { possibleEntryPoints.add(onUserLeaveHint); possibleEntryPoints.add(onWindowAttributesChanged); possibleEntryPoints.add(onWindowFocusChanged); + possibleEntryPoints.add(onSharedPreferenceChanged); } } diff --git a/com.ibm.wala.ide.jdt.test/.classpath b/com.ibm.wala.ide.jdt.test/.classpath index abda64c74..771008c8c 100644 --- a/com.ibm.wala.ide.jdt.test/.classpath +++ b/com.ibm.wala.ide.jdt.test/.classpath @@ -3,6 +3,6 @@ - + diff --git a/com.ibm.wala.ide.jdt.test/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.ide.jdt.test/.settings/org.eclipse.jdt.core.prefs index 92bf738bc..9365a9bb6 100644 --- a/com.ibm.wala.ide.jdt.test/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.ide.jdt.test/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,10 @@ eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -72,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 diff --git a/com.ibm.wala.ide.jdt.test/META-INF/MANIFEST.MF b/com.ibm.wala.ide.jdt.test/META-INF/MANIFEST.MF index 34062f733..2d2f244c1 100644 --- a/com.ibm.wala.ide.jdt.test/META-INF/MANIFEST.MF +++ b/com.ibm.wala.ide.jdt.test/META-INF/MANIFEST.MF @@ -19,7 +19,8 @@ Require-Bundle: com.ibm.wala.cast.java.test;bundle-version="1.0.0", org.eclipse.jdt.core;bundle-version="3.4.2", org.junit;bundle-version="4.0.0", org.eclipse.core.runtime, - org.eclipse.pde.core;bundle-version="3.6.0", - org.eclipse.platform;bundle-version="4.2.2" + org.eclipse.pde.core, + org.eclipse.platform, + org.eclipse.jdt.launching.macosx;resolution:=optional Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 diff --git a/com.ibm.wala.ide.jdt.test/build.properties b/com.ibm.wala.ide.jdt.test/build.properties index 20556c948..84f5eebc3 100644 --- a/com.ibm.wala.ide.jdt.test/build.properties +++ b/com.ibm.wala.ide.jdt.test/build.properties @@ -3,3 +3,4 @@ source.. = source/,\ output.. = bin/ bin.includes = META-INF/,\ . +jre.compilation.profile = JavaSE-1.7 diff --git a/com.ibm.wala.ide.jdt.test/launchers/JDTJava15IRTests.launch b/com.ibm.wala.ide.jdt.test/launchers/JDTJava15IRTests.launch index a8cf585be..8345da487 100644 --- a/com.ibm.wala.ide.jdt.test/launchers/JDTJava15IRTests.launch +++ b/com.ibm.wala.ide.jdt.test/launchers/JDTJava15IRTests.launch @@ -1,5 +1,8 @@ + + + @@ -12,7 +15,9 @@ - + + + @@ -25,6 +30,7 @@ + @@ -34,7 +40,13 @@ - + + + + + + + diff --git a/com.ibm.wala.ide.jdt.test/pom.xml b/com.ibm.wala.ide.jdt.test/pom.xml index c0af20239..196702318 100644 --- a/com.ibm.wala.ide.jdt.test/pom.xml +++ b/com.ibm.wala.ide.jdt.test/pom.xml @@ -9,9 +9,9 @@ 1.3.4-SNAPSHOT + com.ibm.wala.ide.jdt.test eclipse-test-plugin - macosx diff --git a/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs index 5c4e197c5..9365a9bb6 100644 --- a/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,7 @@ eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.7 diff --git a/com.ibm.wala.ide.jdt/META-INF/MANIFEST.MF b/com.ibm.wala.ide.jdt/META-INF/MANIFEST.MF index c0c98e293..bc803ed64 100644 --- a/com.ibm.wala.ide.jdt/META-INF/MANIFEST.MF +++ b/com.ibm.wala.ide.jdt/META-INF/MANIFEST.MF @@ -16,8 +16,9 @@ Require-Bundle: org.eclipse.ui, org.eclipse.core.resources, org.eclipse.jdt.core, org.eclipse.pde.core, - org.eclipse.ui.ide;bundle-version="3.8.2", - org.eclipse.jdt.launching;bundle-version="3.6.101" + org.eclipse.ui.ide, + org.eclipse.jdt.launching, + org.eclipse.jdt Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy Export-Package: com.ibm.wala.cast.java.client, diff --git a/com.ibm.wala.ide.jsdt.tests/.classpath b/com.ibm.wala.ide.jsdt.tests/.classpath index 121e527a9..b277a8ac8 100644 --- a/com.ibm.wala.ide.jsdt.tests/.classpath +++ b/com.ibm.wala.ide.jsdt.tests/.classpath @@ -1,7 +1,7 @@ - + diff --git a/com.ibm.wala.ide.jsdt.tests/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.ide.jsdt.tests/.settings/org.eclipse.jdt.core.prefs index 92bf738bc..9365a9bb6 100644 --- a/com.ibm.wala.ide.jsdt.tests/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.ide.jsdt.tests/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,10 @@ eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -72,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 diff --git a/com.ibm.wala.ide.jsdt.tests/META-INF/MANIFEST.MF b/com.ibm.wala.ide.jsdt.tests/META-INF/MANIFEST.MF index fcec5f29b..9f0febef1 100644 --- a/com.ibm.wala.ide.jsdt.tests/META-INF/MANIFEST.MF +++ b/com.ibm.wala.ide.jsdt.tests/META-INF/MANIFEST.MF @@ -19,6 +19,6 @@ Require-Bundle: com.ibm.wala.core;bundle-version="1.1.3", org.eclipse.pde.core;bundle-version="3.8.1", org.eclipse.equinox.common;bundle-version="3.6.100", org.eclipse.core.runtime;bundle-version="3.8.0" -Bundle-ActivationPolicy: lazy Bundle-Activator: com.ibm.wala.ide.jsdt.tests.Activator Export-Package: com.ibm.wala.ide.jsdt.tests +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 diff --git a/com.ibm.wala.ide.jsdt.tests/launchers/WLProjectWebScopeTest.launch b/com.ibm.wala.ide.jsdt.tests/launchers/WLProjectWebScopeTest.launch index 83852bb19..f7661bc66 100644 --- a/com.ibm.wala.ide.jsdt.tests/launchers/WLProjectWebScopeTest.launch +++ b/com.ibm.wala.ide.jsdt.tests/launchers/WLProjectWebScopeTest.launch @@ -14,7 +14,7 @@ - + @@ -24,9 +24,9 @@ - + - + diff --git a/com.ibm.wala.ide.jsdt.tests/pom.xml b/com.ibm.wala.ide.jsdt.tests/pom.xml index 357951ad7..b57734e35 100644 --- a/com.ibm.wala.ide.jsdt.tests/pom.xml +++ b/com.ibm.wala.ide.jsdt.tests/pom.xml @@ -27,4 +27,16 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + 1 + + + + diff --git a/com.ibm.wala.ide.jsdt.tests/src/com/ibm/wala/ide/jsdt/tests/AbstractJSProjectScopeTest.java b/com.ibm.wala.ide.jsdt.tests/src/com/ibm/wala/ide/jsdt/tests/AbstractJSProjectScopeTest.java index fda5924b7..62dc0c78c 100644 --- a/com.ibm.wala.ide.jsdt.tests/src/com/ibm/wala/ide/jsdt/tests/AbstractJSProjectScopeTest.java +++ b/com.ibm.wala.ide.jsdt.tests/src/com/ibm/wala/ide/jsdt/tests/AbstractJSProjectScopeTest.java @@ -68,7 +68,7 @@ public abstract class AbstractJSProjectScopeTest { return JavaScriptEclipseProjectPath.make(p, Collections.>emptySet()); } - @Ignore("works for me on luna, but ignored for now to avoid breaking juno") + @Ignore("works for me on Eclipse Luna, but I cannot make it work with maven") @Test public void testParsing() throws IOException, CoreException { Set mes = JsdtUtil.getJavaScriptCodeFromProject(project.projectName); diff --git a/com.ibm.wala.ide.jsdt/.classpath b/com.ibm.wala.ide.jsdt/.classpath index bfe5f448e..fc79b4edd 100644 --- a/com.ibm.wala.ide.jsdt/.classpath +++ b/com.ibm.wala.ide.jsdt/.classpath @@ -2,6 +2,6 @@ - + diff --git a/com.ibm.wala.ide.jsdt/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.ide.jsdt/.settings/org.eclipse.jdt.core.prefs index 92bf738bc..9365a9bb6 100644 --- a/com.ibm.wala.ide.jsdt/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.ide.jsdt/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,10 @@ eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -72,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 diff --git a/com.ibm.wala.ide.jsdt/META-INF/MANIFEST.MF b/com.ibm.wala.ide.jsdt/META-INF/MANIFEST.MF index 0f3d023f7..14fa5f5cf 100644 --- a/com.ibm.wala.ide.jsdt/META-INF/MANIFEST.MF +++ b/com.ibm.wala.ide.jsdt/META-INF/MANIFEST.MF @@ -22,6 +22,7 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.pde.core;bundle-version="3.8.1" Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy +Import-Package: org.eclipse.wst.jsdt.internal.corext.callhierarchy Export-Package: com.ibm.wala.cast.js.client, com.ibm.wala.ide.jsdt, com.ibm.wala.ide.util 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 90b33309b..38a6ee76a 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 @@ -54,6 +54,7 @@ import com.ibm.wala.ide.util.HeadlessUtil.EclipseCompiler; import com.ibm.wala.ide.util.HeadlessUtil.Parser; import com.ibm.wala.ipa.callgraph.AnalysisScope; import com.ibm.wala.util.collections.HashSetFactory; +import com.ibm.wala.util.collections.Pair; import com.ibm.wala.util.functions.Function; import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph; @@ -76,7 +77,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, Collections.EMPTY_SET).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS))); + AnalysisScope s = JavaScriptEclipseProjectPath.make(p, Collections.>emptySet()).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS))); List modules = s.getModules(JavaScriptTypes.jsLoader); Set mes = HashSetFactory.make(); diff --git a/com.ibm.wala.ide.tests/launchers/SWTCallGraph.launch b/com.ibm.wala.ide.tests/launchers/SWTCallGraph.launch index 08be6274b..78d71de8d 100644 --- a/com.ibm.wala.ide.tests/launchers/SWTCallGraph.launch +++ b/com.ibm.wala.ide.tests/launchers/SWTCallGraph.launch @@ -6,6 +6,7 @@ + diff --git a/com.ibm.wala.ide/META-INF/MANIFEST.MF b/com.ibm.wala.ide/META-INF/MANIFEST.MF index 22be5e8a4..4cf65db68 100644 --- a/com.ibm.wala.ide/META-INF/MANIFEST.MF +++ b/com.ibm.wala.ide/META-INF/MANIFEST.MF @@ -15,7 +15,9 @@ Require-Bundle: com.ibm.wala.core, org.eclipse.core.resources, org.eclipse.core.runtime, org.eclipse.jdt.core, - org.eclipse.ui.ide;bundle-version="3.8.2" + org.eclipse.ui.ide, + org.eclipse.jdt, + org.eclipse.jdt.launching Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Export-Package: com.ibm.wala.ide.classloader, diff --git a/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java b/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java index 9c0705685..b76d8ed62 100644 --- a/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java +++ b/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java @@ -201,6 +201,7 @@ public abstract class EclipseProjectPath { if (!model.isInSync() || model.isDisposed()) { model.load(); } + BundleDescription bd = model.getBundleDescription(); if (bd == null) { diff --git a/com.ibm.wala.shrike/src/com/ibm/wala/shrikeCT/AnnotationsReader.java b/com.ibm.wala.shrike/src/com/ibm/wala/shrikeCT/AnnotationsReader.java index cae7cc491..d941a47fe 100644 --- a/com.ibm.wala.shrike/src/com/ibm/wala/shrikeCT/AnnotationsReader.java +++ b/com.ibm.wala.shrike/src/com/ibm/wala/shrikeCT/AnnotationsReader.java @@ -97,7 +97,7 @@ public class AnnotationsReader extends AttributeReader { @Override public String toString() { - return val.toString(); + return String.valueOf(val); } } diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/functions/Function.java b/com.ibm.wala.util/src/com/ibm/wala/util/functions/Function.java index 58307f8e5..1f5664b83 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/functions/Function.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/functions/Function.java @@ -10,6 +10,7 @@ *******************************************************************************/ package com.ibm.wala.util.functions; + /** */ public interface Function { diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/intset/BitVectorIntSet.java b/com.ibm.wala.util/src/com/ibm/wala/util/intset/BitVectorIntSet.java index 3b112cec2..c257cf63c 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/intset/BitVectorIntSet.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/intset/BitVectorIntSet.java @@ -224,6 +224,7 @@ public final class BitVectorIntSet implements MutableIntSet { @Override public boolean hasNext() { + assert populationCount == bitVector.populationCount(); return count < populationCount; } diff --git a/pom.xml b/pom.xml index 35d5a0648..855d261d4 100644 --- a/pom.xml +++ b/pom.xml @@ -1,218 +1,230 @@ - 4.0.0 - com.ibm.wala - WALA - 1.3.4-SNAPSHOT - pom - - 1.3.4-SNAPSHOT - UTF-8 - b000 - 0.19.0 - scm:git:ssh://github.com:wala/WALA.git - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + 4.0.0 + com.ibm.wala + WALA + 1.3.4-SNAPSHOT + pom + + 1.3.4-SNAPSHOT + UTF-8 + b000 + 0.19.0 + scm:git:ssh://github.com:wala/WALA.git + + + + targets - - targets + com.ibm.wala-feature + com.ibm.wala.core + com.ibm.wala.shrike + com.ibm.wala.util + + com.ibm.wala.core.testdata + com.ibm.wala.core.tests + + com.ibm.wala.cast + com.ibm.wala.cast.test + com.ibm.wala.cast.java + com.ibm.wala.cast.java.test + com.ibm.wala.cast.java.test.data + + com.ibm.wala.ide-feature + com.ibm.wala.ide + com.ibm.wala.ide.tests + + com.ibm.wala.ide.jdt + com.ibm.wala.ide.jdt.test + + com.ibm.wala.cast.js + com.ibm.wala.cast.js.html.nu_validator + com.ibm.wala.cast.js.test + com.ibm.wala.cast.js.test.data + com.ibm.wala.cast.js.rhino + com.ibm.wala.cast.js.rhino.test + + com.ibm.wala.ide.jsdt + com.ibm.wala.ide.jsdt.tests + + com.ibm.wala.dalvik + com.ibm.wala.dalvik.test + + com.ibm.wala.scandroid + + com.ibm.wala.cast.java.polyglot + com.ibm.wala.cast.java.polyglot.test + + com.ibm.wala-repository + + + + + + org.eclipse.tycho + tycho-maven-plugin + ${tycho-version} + true + + + org.eclipse.tycho + target-platform-configuration + ${tycho-version} + + + + com.ibm.wala.target + e44 + ${project-version} + + + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + 1.7 + 1.7 + -err:-forbidden + + ${project.basedir}/.settings/org.eclipse.jdt.core.prefs + + + + + org.eclipse.tycho + tycho-source-plugin + ${tycho-version} + + + attach-source + process-classes + + plugin-source + + + + + + org.eclipse.tycho + tycho-packaging-plugin + ${tycho-version} + + 'v'yyyyMMdd-HHmm'-${build-alias}' + false + + true + + + + + org.eclipse.tycho.extras + tycho-sourceref-jgit + ${tycho-version} + + + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + - com.ibm.wala-feature - com.ibm.wala.core - com.ibm.wala.shrike - com.ibm.wala.util - - com.ibm.wala.core.testdata - com.ibm.wala.core.tests - - com.ibm.wala.dalvik - com.ibm.wala.dalvik.test - com.ibm.wala.scandroid - - com.ibm.wala.cast - com.ibm.wala.cast.test - com.ibm.wala.cast.java - com.ibm.wala.cast.java.test - com.ibm.wala.cast.java.test.data - com.ibm.wala.cast.java.polyglot - com.ibm.wala.cast.java.polyglot.test - com.ibm.wala.cast.js - com.ibm.wala.cast.js.html.nu_validator - com.ibm.wala.cast.js.test - com.ibm.wala.cast.js.test.data - com.ibm.wala.cast.js.rhino - com.ibm.wala.cast.js.rhino.test - - com.ibm.wala.ide-feature - com.ibm.wala.ide - com.ibm.wala.ide.tests - com.ibm.wala.ide.jdt - com.ibm.wala.ide.jsdt - com.ibm.wala.ide.jsdt.tests - com.ibm.wala.ide.jdt.test - - com.ibm.wala-repository - - - - - - - org.eclipse.tycho - tycho-maven-plugin - ${tycho-version} - true - - - org.eclipse.tycho - target-platform-configuration - ${tycho-version} - - - - com.ibm.wala.target - e42 - ${project-version} - - - - - - org.eclipse.tycho - tycho-compiler-plugin - ${tycho-version} - - 1.7 - 1.7 - -err:-forbidden - - ${project.basedir}/.settings/org.eclipse.jdt.core.prefs - - - - - org.eclipse.tycho - tycho-source-plugin - ${tycho-version} - - - attach-source - process-classes - - plugin-source - - - - - - org.eclipse.tycho - tycho-packaging-plugin - ${tycho-version} - - 'v'yyyyMMdd-HHmm'-${build-alias}' - false - - true - - - - - org.eclipse.tycho.extras - tycho-sourceref-jgit - ${tycho-version} - - - - - org.eclipse.tycho - tycho-surefire-plugin - ${tycho-version} - - false - false - junit47 - ${tycho.test.jvmArgs} - - **/Test*.java - **/*Test.java - **/*TestCase.java - **/*Tests.java - - - - - - org.eclipse.tycho.extras - tycho-source-feature-plugin - ${tycho-version} - - - generate-source-feature - - source-feature - - - - - - org.eclipse.tycho - tycho-p2-plugin - ${tycho-version} - - - - default-p2-metadata-default - - false - - - - - attach-p2-metadata - package - - p2-metadata - - - - - - org.eclipse.tycho - tycho-p2-director-plugin - ${tycho-version} - - - org.eclipse.tycho - tycho-p2-repository-plugin - ${tycho-version} - - false - - - - com.googlecode.maven-download-plugin - maven-download-plugin - 1.0.0 - - - org.apache.maven.plugins - maven-surefire-plugin - 2.14.1 - - - - - - sonatype-public-repository - https://oss.sonatype.org/content/groups/public - - true - - - true - - - + + + eclipse-plugin + org.eclipse.osgi.compatibility.state + 0.0.0 + + + false + false + junit47 + ${tycho.test.jvmArgs} + + **/Test*.java + **/*Test.java + **/*TestCase.java + **/*Tests.java + + + + + + org.eclipse.tycho.extras + tycho-source-feature-plugin + ${tycho-version} + + + generate-source-feature + + source-feature + + + + + + org.eclipse.tycho + tycho-p2-plugin + ${tycho-version} + + + + default-p2-metadata-default + + false + + + + + attach-p2-metadata + package + + p2-metadata + + + + + + org.eclipse.tycho + tycho-p2-director-plugin + ${tycho-version} + + + org.eclipse.tycho + tycho-p2-repository-plugin + ${tycho-version} + + true + + + + com.googlecode.maven-download-plugin + maven-download-plugin + 1.0.0 + + + org.apache.maven.plugins + maven-surefire-plugin + 2.14.1 + + + + + + sonatype-public-repository + https://oss.sonatype.org/content/groups/public + + true + + + true + + + diff --git a/targets/e44/e44.target b/targets/e44/e44.target index 9a5c8b27a..f5914a57e 100644 --- a/targets/e44/e44.target +++ b/targets/e44/e44.target @@ -1,30 +1,16 @@ - - - - - - - - - - + - - - - - - - - - - - - + + + + + + +