fixes to regression tests:

now, for me, code works using e44 with maven
  dalvik tests refactored for mobile version with android dev tools
  IDE tests Eclipse metadata fixed to make e44 work for me
  new android entrypoint to fix failure in new droidbench tests
This commit is contained in:
Julian Dolby 2015-03-24 21:51:35 -04:00
parent 1ea7746533
commit 43c37d6d0e
56 changed files with 496 additions and 401 deletions

View File

@ -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.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 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.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.compliance=1.7

View File

@ -4,5 +4,4 @@ Bundle-Name: Data Plug-in
Bundle-SymbolicName: com.ibm.wala.cast.java.test.data Bundle-SymbolicName: com.ibm.wala.cast.java.test.data
Bundle-Version: 1.3.4.qualifier Bundle-Version: 1.3.4.qualifier
Bundle-Vendor: IBM Bundle-Vendor: IBM
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.7

View File

@ -17,7 +17,7 @@ import com.ibm.wala.analysis.typeInference.PrimitiveType;
import com.ibm.wala.analysis.typeInference.TypeAbstraction; import com.ibm.wala.analysis.typeInference.TypeAbstraction;
import com.ibm.wala.analysis.typeInference.TypeVariable; import com.ibm.wala.analysis.typeInference.TypeVariable;
import com.ibm.wala.cast.analysis.typeInference.AstTypeInference; 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.AstJavaInstructionVisitor;
import com.ibm.wala.cast.java.ssa.AstJavaInvokeInstruction; import com.ibm.wala.cast.java.ssa.AstJavaInvokeInstruction;
import com.ibm.wala.cast.java.ssa.EnclosingObjectReference; import com.ibm.wala.cast.java.ssa.EnclosingObjectReference;
@ -40,8 +40,8 @@ public class AstJavaTypeInference extends AstTypeInference {
public void visitBinaryOp(SSABinaryOpInstruction instruction) { public void visitBinaryOp(SSABinaryOpInstruction instruction) {
if (doPrimitives) { if (doPrimitives) {
IBinaryOpInstruction.IOperator op = instruction.getOperator(); IBinaryOpInstruction.IOperator op = instruction.getOperator();
if (op == AstConstants.BinaryOp.EQ || op == AstConstants.BinaryOp.NE || op == AstConstants.BinaryOp.LT if (op == CAstBinaryOp.EQ || op == CAstBinaryOp.NE || op == CAstBinaryOp.LT
|| op == AstConstants.BinaryOp.GE || op == AstConstants.BinaryOp.GT || op == AstConstants.BinaryOp.LE) { || op == CAstBinaryOp.GE || op == CAstBinaryOp.GT || op == CAstBinaryOp.LE) {
result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE))); result = new DeclaredTypeOperator(language.getPrimitive(language.getConstantType(Boolean.TRUE)));
} else { } else {
result = new PrimAndStringOp(); result = new PrimAndStringOp();

View File

@ -42,7 +42,7 @@ public abstract class AbstractFieldBasedTest extends TestJSCallGraphShape {
protected JSCallGraph runTest(URL url, Object[][] assertions, BuilderType... builderTypes) throws IOException, WalaException, Error, CancelException { protected JSCallGraph runTest(URL url, Object[][] assertions, BuilderType... builderTypes) throws IOException, WalaException, Error, CancelException {
JSCallGraph cg = null; JSCallGraph cg = null;
for(BuilderType builderType : builderTypes) { for(BuilderType builderType : builderTypes) {
ProgressMaster monitor = ProgressMaster.make(new NullProgressMonitor(), 30000, true); ProgressMaster monitor = ProgressMaster.make(new NullProgressMonitor(), 45000, true);
try { try {
cg = util.buildCG(url, builderType, monitor, false).fst; cg = util.buildCG(url, builderType, monitor, false).fst;
System.err.println(cg); System.err.println(cg);

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig"> <launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestMozillaBugPagesRhino.java"/> <listEntry value="/com.ibm.wala.cast.js.rhino.test"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="4"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="/tmp/rhinojs.out"/> <stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="/tmp/rhinojs.out"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
@ -14,6 +14,7 @@
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/> <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestMozillaBugPagesRhino"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestMozillaBugPagesRhino"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/>

View File

@ -22,7 +22,7 @@
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.ibm.wala.cast.js.test.data/examples-src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/> <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/com.ibm.wala.cast.js.test.data/examples-src&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
</listAttribute> </listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7/"/> <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/1.7.0 25/"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048M -verbose:gc -ea"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx2048M -verbose:gc -ea"/>

View File

@ -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': {} }; var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} };

View File

@ -12,5 +12,5 @@ var fs2 = [];
} }
})(fs1, fs2); })(fs1, fs2);
fs[fs2[2]](); (fs[fs2[2]])();
fs[fs2[3]](); (fs[fs2[3]])();

View File

@ -10,10 +10,12 @@
<mapAttribute key="org.eclipse.debug.core.preferred_launchers"> <mapAttribute key="org.eclipse.debug.core.preferred_launchers">
<mapEntry key="[run]" value="org.eclipse.jdt.junit.launchconfig"/> <mapEntry key="[run]" value="org.eclipse.jdt.junit.launchconfig"/>
</mapAttribute> </mapAttribute>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="/tmp/cg.out"/>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> <stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestSimpleCallGraphShapeRhino"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestSimpleCallGraphShapeRhino"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.js.rhino.test"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M -Dcom.ibm.wala.tracefile=/tmp/jssimplecg.out -ea"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M -Dcom.ibm.wala.tracefile=/tmp/jssimplecg.out -ea"/>

View File

@ -11,7 +11,7 @@
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/> <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/1.7.0 25/"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.test"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.cast.test"/>
</launchConfiguration> </launchConfiguration>

View File

@ -13,23 +13,11 @@ package com.ibm.wala.cast.ir.ssa;
import com.ibm.wala.shrikeBT.IBinaryOpInstruction; import com.ibm.wala.shrikeBT.IBinaryOpInstruction;
import com.ibm.wala.shrikeBT.IUnaryOpInstruction; import com.ibm.wala.shrikeBT.IUnaryOpInstruction;
public interface AstConstants { public enum CAstBinaryOp implements IBinaryOpInstruction.IOperator {
public enum BinaryOp implements IBinaryOpInstruction.IOperator {
CONCAT, EQ, NE, LT, GE, GT, LE, STRICT_EQ, STRICT_NE; CONCAT, EQ, NE, LT, GE, GT, LE, STRICT_EQ, STRICT_NE;
@Override @Override
public String toString() { public String toString() {
return super.toString().toLowerCase(); return super.toString().toLowerCase();
} }
}
public enum UnaryOp implements IUnaryOpInstruction.IOperator {
MINUS, BITNOT, PLUS;
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
} }

View File

@ -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();
}
}

View File

@ -23,7 +23,6 @@ import java.util.Set;
import com.ibm.wala.cast.ir.ssa.AssignInstruction; import com.ibm.wala.cast.ir.ssa.AssignInstruction;
import com.ibm.wala.cast.ir.ssa.AstAssertInstruction; 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.AstEchoInstruction;
import com.ibm.wala.cast.ir.ssa.AstGlobalRead; import com.ibm.wala.cast.ir.ssa.AstGlobalRead;
import com.ibm.wala.cast.ir.ssa.AstGlobalWrite; 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.AstLexicalAccess.Access;
import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalRead;
import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; 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.EachElementGetInstruction;
import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction;
import com.ibm.wala.cast.ir.ssa.SSAConversion; import com.ibm.wala.cast.ir.ssa.SSAConversion;
@ -3018,13 +3019,13 @@ public abstract class AstTranslator extends CAstVisitor<AstTranslator.WalkContex
protected IUnaryOpInstruction.IOperator translateUnaryOpcode(CAstNode op) { protected IUnaryOpInstruction.IOperator translateUnaryOpcode(CAstNode op) {
if (op == CAstOperator.OP_BITNOT) if (op == CAstOperator.OP_BITNOT)
return AstConstants.UnaryOp.BITNOT; return CAstUnaryOp.BITNOT;
else if (op == CAstOperator.OP_NOT) else if (op == CAstOperator.OP_NOT)
return IUnaryOpInstruction.Operator.NEG; return IUnaryOpInstruction.Operator.NEG;
else if (op == CAstOperator.OP_SUB) else if (op == CAstOperator.OP_SUB)
return AstConstants.UnaryOp.MINUS; return CAstUnaryOp.MINUS;
else if (op == CAstOperator.OP_ADD) else if (op == CAstOperator.OP_ADD)
return AstConstants.UnaryOp.PLUS; return CAstUnaryOp.PLUS;
else else
Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op)); Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op));
return null; return null;
@ -3055,23 +3056,23 @@ public abstract class AstTranslator extends CAstVisitor<AstTranslator.WalkContex
else if (op == CAstOperator.OP_BIT_XOR) else if (op == CAstOperator.OP_BIT_XOR)
return BinaryOpInstruction.Operator.XOR; return BinaryOpInstruction.Operator.XOR;
else if (op == CAstOperator.OP_CONCAT) else if (op == CAstOperator.OP_CONCAT)
return AstConstants.BinaryOp.CONCAT; return CAstBinaryOp.CONCAT;
else if (op == CAstOperator.OP_EQ) else if (op == CAstOperator.OP_EQ)
return AstConstants.BinaryOp.EQ; return CAstBinaryOp.EQ;
else if (op == CAstOperator.OP_STRICT_EQ) else if (op == CAstOperator.OP_STRICT_EQ)
return AstConstants.BinaryOp.STRICT_EQ; return CAstBinaryOp.STRICT_EQ;
else if (op == CAstOperator.OP_GE) else if (op == CAstOperator.OP_GE)
return AstConstants.BinaryOp.GE; return CAstBinaryOp.GE;
else if (op == CAstOperator.OP_GT) else if (op == CAstOperator.OP_GT)
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
else if (op == CAstOperator.OP_LE) else if (op == CAstOperator.OP_LE)
return AstConstants.BinaryOp.LE; return CAstBinaryOp.LE;
else if (op == CAstOperator.OP_LT) else if (op == CAstOperator.OP_LT)
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
else if (op == CAstOperator.OP_NE) else if (op == CAstOperator.OP_NE)
return AstConstants.BinaryOp.NE; return CAstBinaryOp.NE;
else if (op == CAstOperator.OP_STRICT_NE) else if (op == CAstOperator.OP_STRICT_NE)
return AstConstants.BinaryOp.STRICT_NE; return CAstBinaryOp.STRICT_NE;
else { else {
Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op)); Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op));
return null; return null;

View File

@ -9,3 +9,5 @@ org\/openide\/.*
com\/ibm\/crypto\/.* com\/ibm\/crypto\/.*
com\/ibm\/security\/.* com\/ibm\/security\/.*
org\/apache\/xerces\/.* org\/apache\/xerces\/.*
dalvik\/.*
java\/io\/ObjectStreamClass*

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.ibm.wala.core.tests/src/com/ibm/wala/examples/drivers/ExportTypeHierarchyToXML.java"/> <listEntry value="/com.ibm.wala.core.tests"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="4"/>
</listAttribute> </listAttribute>
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.examples.drivers.ExportTypeHierarchyToXML"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.examples.drivers.ExportTypeHierarchyToXML"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-classpath c:/temp/testdata/JLex.jar"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-classpath c:/temp/testdata/JLex.jar"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.core.tests"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.core.tests"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx500M"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx500M"/>
</launchConfiguration> </launchConfiguration>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.ibm.wala.core.tests"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=com.ibm.wala.core.tests/src&lt;com.ibm.wala.core.tests.demandpa"/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;com.ibm.wala.core.tests&quot; path=&quot;1&quot;

View File

@ -24,8 +24,8 @@
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;com.ibm.wala.core.testdata&quot; type=&quot;1&quot;/&gt;&#10;"/> <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;com.ibm.wala.core.testdata&quot; type=&quot;1&quot;/&gt;&#10;"/>
</listAttribute> </listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/> <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/1.7.0 25/"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.core.tests"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.core.tests"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx800M -verbose:gc -Dcom.ibm.wala.util.fixedpoint.impl.verbose=true -XX:-UseSplitVerifier"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx800M -verbose:gc -Dcom.ibm.wala.util.fixedpoint.impl.verbose=true"/>
</launchConfiguration> </launchConfiguration>

View File

@ -75,7 +75,7 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>4.11</version> <version>4.10</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -3,12 +3,10 @@ package com.ibm.wala.dalvik.test;
import static com.ibm.wala.properties.WalaProperties.ANDROID_RT_JAR; import static com.ibm.wala.properties.WalaProperties.ANDROID_RT_JAR;
import java.io.File; import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter; import java.io.FilenameFilter;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
@ -61,33 +59,37 @@ public abstract class DalvikTestBase extends DynamicCallGraphTestBase {
} }
public static URI[] androidLibs() { public static URI[] androidLibs() {
System.err.println(System.getProperty("java.vm.name"));
if ("Dalvik".equals(System.getProperty("java.vm.name"))) { if ("Dalvik".equals(System.getProperty("java.vm.name"))) {
try { List<URI> libs = new ArrayList<URI>();
return new URI[]{ for(File f : new File("/system/framework/").listFiles(new FileFilter() {
new URL("file:///system/framework/core.jar").toURI(), @Override
new URL("file:///system/framework/framework.jar").toURI(), public boolean accept(File pathname) {
new URL("file:///system/framework/framework2.jar").toURI(), String name = pathname.getName();
new URL("file:///system/framework/framework3.jar").toURI() return
}; (name.startsWith("core") || name.startsWith("framework")) &&
} catch (MalformedURLException e) { (name.endsWith("jar") || name.endsWith("apk"));
assert false : e; }
return null; }))
} catch (URISyntaxException e) { {
assert false : e; System.out.println("adding " + f);
return null; libs.add(f.toURI());
} }
return libs.toArray(new URI[ libs.size() ]);
} else { } else {
List<URI> libs = new ArrayList<URI>(); List<URI> libs = new ArrayList<URI>();
try { try {
for(File lib : new File(walaProperties.getProperty(ANDROID_RT_JAR)).listFiles(new FilenameFilter() { for(File lib : new File(walaProperties.getProperty(ANDROID_RT_JAR)).listFiles(new FilenameFilter() {
@Override @Override
public boolean accept(File dir, String name) { 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()); libs.add(lib.toURI());
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("unexpected " + e);
for(String l : WalaProperties.getJ2SEJarFiles()) { for(String l : WalaProperties.getJ2SEJarFiles()) {
libs.add(new File(l).toURI()); libs.add(new File(l).toURI());
} }

View File

@ -15,6 +15,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; 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.ClassHierarchy;
import com.ibm.wala.ipa.cha.ClassHierarchyException; import com.ibm.wala.ipa.cha.ClassHierarchyException;
import com.ibm.wala.ipa.cha.IClassHierarchy; 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.shrikeBT.analysis.Analyzer.FailureException;
import com.ibm.wala.shrikeCT.InvalidClassFileException; import com.ibm.wala.shrikeCT.InvalidClassFileException;
import com.ibm.wala.ssa.SSAInstruction; 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.MonitorUtil.IProgressMonitor;
import com.ibm.wala.util.NullProgressMonitor; import com.ibm.wala.util.NullProgressMonitor;
import com.ibm.wala.util.Predicate; 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.FilterIterator;
import com.ibm.wala.util.collections.HashSetFactory; import com.ibm.wala.util.collections.HashSetFactory;
import com.ibm.wala.util.collections.MapIterator; import com.ibm.wala.util.collections.MapIterator;
@ -99,18 +98,30 @@ public class DalvikCallGraphTestBase extends DalvikTestBase {
run(mainClass.substring(1).replace('/', '.'), "LibraryExclusions.txt", args); run(mainClass.substring(1).replace('/', '.'), "LibraryExclusions.txt", args);
} }
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFile) throws ClassHierarchyException, IllegalArgumentException, IOException, CancelException {
return makeAPKCallGraph(apkFileName, new NullProgressMonitor()); return makeAPKCallGraph(apkFile, androidLibs());
}
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException {
return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), androidLibs);
} }
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, ReflectionOptions options) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, ReflectionOptions options) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException {
return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options); return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options, androidLibs());
}
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, ReflectionOptions options, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException {
return makeAPKCallGraph(apkFileName, new NullProgressMonitor(), options, androidLibs);
} }
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException {
return makeAPKCallGraph(apkFileName, monitor, ReflectionOptions.NONE); return makeAPKCallGraph(apkFileName, monitor, ReflectionOptions.NONE, androidLibs);
} }
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String absolutePath, IProgressMonitor pm, ReflectionOptions none) throws ClassHierarchyException, IllegalArgumentException, IOException, CancelException {
return makeAPKCallGraph(absolutePath, pm, none, androidLibs());
}
@SuppressWarnings("unused") @SuppressWarnings("unused")
private static SSAContextInterpreter makeDefaultInterpreter(AnalysisOptions options, AnalysisCache cache) { private static SSAContextInterpreter makeDefaultInterpreter(AnalysisOptions options, AnalysisCache cache) {
return new DefaultSSAInterpreter(options, cache) { return new DefaultSSAInterpreter(options, cache) {
@ -137,13 +148,13 @@ public class DalvikCallGraphTestBase extends DalvikTestBase {
}; };
} }
public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, ReflectionOptions policy) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException { public static Pair<CallGraph, PointerAnalysis<InstanceKey>> makeAPKCallGraph(String apkFileName, IProgressMonitor monitor, ReflectionOptions policy, URI[] androidLibs) throws IOException, ClassHierarchyException, IllegalArgumentException, CancelException {
AnalysisScope scope = AnalysisScope scope =
AndroidAnalysisScope.setUpAndroidAnalysisScope( AndroidAnalysisScope.setUpAndroidAnalysisScope(
new File(apkFileName).toURI(), new File(apkFileName).toURI(),
"AndroidRegressionExclusions.txt", "AndroidRegressionExclusions.txt",
CallGraphTestUtil.class.getClassLoader(), CallGraphTestUtil.class.getClassLoader(),
androidLibs()); androidLibs);
final IClassHierarchy cha = ClassHierarchy.make(scope); final IClassHierarchy cha = ClassHierarchy.make(scope);
@ -199,4 +210,5 @@ public class DalvikCallGraphTestBase extends DalvikTestBase {
return Pair.make(callGraph, ptrAnalysis); return Pair.make(callGraph, ptrAnalysis);
} }
} }

View File

@ -77,8 +77,9 @@ public abstract class DroidBenchCGTest extends DalvikCallGraphTestBase {
uncalledFunctions.put("VirtualDispatch2.apk", x); uncalledFunctions.put("VirtualDispatch2.apk", x);
} }
private void assertUserCodeReachable(CallGraph cg) throws InvalidClassFileException { public static Set<IMethod> assertUserCodeReachable(CallGraph cg, Set<MethodReference> uncalled) throws InvalidClassFileException {
for(Iterator<IClass> clss = cg.getClassHierarchy().getLoader(ClassLoaderReference.Application).iterateAllClasses(); Set<IMethod> result = HashSetFactory.make();
for(Iterator<IClass> clss = cg.getClassHierarchy().getLoader(ClassLoaderReference.Application).iterateAllClasses();
clss.hasNext(); ) clss.hasNext(); )
{ {
IClass cls = clss.next(); 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")) { if (! cls.getName().toString().startsWith("Landroid") && ! cls.getName().toString().equals("Lde/ecspride/R$styleable")) {
for(IMethod m : cls.getDeclaredMethods()) { for(IMethod m : cls.getDeclaredMethods()) {
if (!m.isInit() && !m.isAbstract() && !uncalled.contains(m.getReference())) { 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()); if (! cg.getNodes(m.getReference()).isEmpty()) {
System.err.println("found " + m); System.err.println("found " + m);
} else {
result.add(m);
}
} }
} }
} }
} }
return result;
} }
private final String apkFile; private final String apkFile;
@ -110,11 +115,12 @@ public abstract class DroidBenchCGTest extends DalvikCallGraphTestBase {
System.err.println("testing " + apkFile + "..."); System.err.println("testing " + apkFile + "...");
Pair<CallGraph,PointerAnalysis<InstanceKey>> x = makeAPKCallGraph(apkFile, ReflectionOptions.ONE_FLOW_TO_CASTS_APPLICATION_GET_METHOD); Pair<CallGraph,PointerAnalysis<InstanceKey>> x = makeAPKCallGraph(apkFile, ReflectionOptions.ONE_FLOW_TO_CASTS_APPLICATION_GET_METHOD);
//System.err.println(x.fst); //System.err.println(x.fst);
assertUserCodeReachable(x.fst); Set<IMethod> bad = assertUserCodeReachable(x.fst, uncalled);
Assert.assertTrue(bad + " should be empty", bad.isEmpty());
System.err.println("...success testing " + apkFile); System.err.println("...success testing " + apkFile);
} }
private static final Set<String> skipTests = HashSetFactory.make(); private static final Set<String> skipTests = HashSetFactory.make();
static { static {
// serialization issues // serialization issues
skipTests.add("ServiceCommunication1.apk"); skipTests.add("ServiceCommunication1.apk");

View File

@ -3,12 +3,12 @@
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry exported="true" kind="lib" path="lib/dexlib-1.3.4-dev.jar"/>
<classpathentry exported="true" kind="lib" path="lib/guava-13.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-cli-1.2.jar"/> <classpathentry exported="true" kind="lib" path="lib/commons-cli-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/> <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/logback-classic-1.0.9.jar"/> <classpathentry exported="true" kind="lib" path="lib/logback-classic-1.0.9.jar"/>
<classpathentry exported="true" kind="lib" path="lib/logback-core-1.0.9.jar"/> <classpathentry exported="true" kind="lib" path="lib/logback-core-1.0.9.jar"/>
<classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.2.jar"/> <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/guava-13.0.1.jar"/>
<classpathentry kind="lib" path="lib/dexlib-1.3.4-dev.jar"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -52,6 +52,7 @@ import java.io.IOException;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.jar.JarFile;
import org.jf.dexlib.ClassDefItem; import org.jf.dexlib.ClassDefItem;
import org.jf.dexlib.DexFile; import org.jf.dexlib.DexFile;
@ -61,6 +62,7 @@ import org.slf4j.LoggerFactory;
import com.ibm.wala.classLoader.Module; import com.ibm.wala.classLoader.Module;
import com.ibm.wala.classLoader.ModuleEntry; import com.ibm.wala.classLoader.ModuleEntry;
import com.ibm.wala.util.io.TemporaryFile;
/** /**
* A module which is a wrapper around .dex and .apk file. * 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 DexFile dexfile;
private final Collection<ModuleEntry> entries; private final Collection<ModuleEntry> 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 * @param f
* the .dex or .apk file * the .dex or .apk file
* @throws IllegalArgumentException * @throws IllegalArgumentException
*/ */
public DexFileModule(File f) throws IllegalArgumentException { private DexFileModule(File f) throws IllegalArgumentException {
try { try {
dexfile = new DexFile(f); dexfile = new DexFile(f);
} catch (IOException e) { } catch (IOException e) {

View File

@ -153,7 +153,7 @@ public class WDexClassLoaderImpl extends ClassLoaderImpl {
ModuleEntry entry = (ModuleEntry) it.next(); ModuleEntry entry = (ModuleEntry) it.next();
if (entry instanceof DexModuleEntry) { if (entry instanceof DexModuleEntry) {
result.add(entry); result.add(entry);
} }
} }
return result; return result;
} }

View File

@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions;
import org.jf.dexlib.Code.Opcode; 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.DexIMethod;
import com.ibm.wala.dalvik.classLoader.Literal; import com.ibm.wala.dalvik.classLoader.Literal;
import com.ibm.wala.shrikeBT.IBinaryOpInstruction; import com.ibm.wala.shrikeBT.IBinaryOpInstruction;
@ -90,21 +90,21 @@ public class BinaryLiteralOperation extends Instruction {
switch(op) switch(op)
{ {
case CMPL_FLOAT: case CMPL_FLOAT:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_FLOAT: case CMPG_FLOAT:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_DOUBLE: case CMPL_DOUBLE:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_DOUBLE: case CMPG_DOUBLE:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_LONG: case CMPL_LONG:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_LONG: case CMPG_LONG:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_INT: case CMPL_INT:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_INT: case CMPG_INT:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case ADD_INT: case ADD_INT:
return IBinaryOpInstruction.Operator.ADD; return IBinaryOpInstruction.Operator.ADD;
case RSUB_INT: case RSUB_INT:

View File

@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions;
import org.jf.dexlib.Code.Opcode; 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.DexIMethod;
import com.ibm.wala.shrikeBT.IBinaryOpInstruction; import com.ibm.wala.shrikeBT.IBinaryOpInstruction;
import com.ibm.wala.shrikeBT.IShiftInstruction; import com.ibm.wala.shrikeBT.IShiftInstruction;
@ -89,21 +89,21 @@ public class BinaryOperation extends Instruction {
switch(op) switch(op)
{ {
case CMPL_FLOAT: case CMPL_FLOAT:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_FLOAT: case CMPG_FLOAT:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_DOUBLE: case CMPL_DOUBLE:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_DOUBLE: case CMPG_DOUBLE:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_LONG: case CMPL_LONG:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_LONG: case CMPG_LONG:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case CMPL_INT: case CMPL_INT:
return AstConstants.BinaryOp.LT; return CAstBinaryOp.LT;
case CMPG_INT: case CMPG_INT:
return AstConstants.BinaryOp.GT; return CAstBinaryOp.GT;
case ADD_INT: case ADD_INT:
return IBinaryOpInstruction.Operator.ADD; return IBinaryOpInstruction.Operator.ADD;
case SUB_INT: case SUB_INT:

View File

@ -50,7 +50,7 @@ package com.ibm.wala.dalvik.dex.instructions;
import org.jf.dexlib.Code.Opcode; 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.dalvik.classLoader.DexIMethod;
import com.ibm.wala.shrikeBT.IUnaryOpInstruction; import com.ibm.wala.shrikeBT.IUnaryOpInstruction;
import com.ibm.wala.shrikeBT.IUnaryOpInstruction.IOperator; import com.ibm.wala.shrikeBT.IUnaryOpInstruction.IOperator;
@ -119,15 +119,15 @@ public class UnaryOperation extends Instruction {
{ {
// SSA unary ops // SSA unary ops
case NOT: case NOT:
return AstConstants.UnaryOp.BITNOT; return CAstUnaryOp.BITNOT;
case NEGINT: case NEGINT:
return IUnaryOpInstruction.Operator.NEG; return IUnaryOpInstruction.Operator.NEG;
case NOTINT: case NOTINT:
return AstConstants.UnaryOp.BITNOT; return CAstUnaryOp.BITNOT;
case NEGLONG: case NEGLONG:
return IUnaryOpInstruction.Operator.NEG; return IUnaryOpInstruction.Operator.NEG;
case NOTLONG: case NOTLONG:
return AstConstants.UnaryOp.BITNOT; return CAstUnaryOp.BITNOT;
case NEGFLOAT: case NEGFLOAT:
return IUnaryOpInstruction.Operator.NEG; return IUnaryOpInstruction.Operator.NEG;
case NEGDOUBLE: case NEGDOUBLE:

View File

@ -89,10 +89,8 @@ public class DexAnalysisScopeReader extends AnalysisScopeReader {
ClassLoaderReference loader = scope.getLoader(AnalysisScope.APPLICATION); ClassLoaderReference loader = scope.getLoader(AnalysisScope.APPLICATION);
final String path = classPath.getPath(); final String path = classPath.getPath();
if (path.endsWith(".jar")) { if (path.endsWith(".jar") || path.endsWith(".apk") || path.endsWith(".dex")) {
scope.addToScope(loader, new JarFile(new File(classPath))); scope.addToScope(loader, DexFileModule.make(new File(classPath)));
} else if (path.endsWith(".apk") || path.endsWith(".dex")) {
scope.addToScope(loader, new DexFileModule(new File(classPath)));
} else { } else {
throw new IOException( throw new IOException(
"could not determine type of classpath from file extension: " "could not determine type of classpath from file extension: "

View File

@ -47,8 +47,9 @@ public class AndroidAnalysisScope {
for(URI al : androidLib) { for(URI al : androidLib) {
try { try {
scope.addToScope(ClassLoaderReference.Primordial, new DexFileModule(new File(al))); scope.addToScope(ClassLoaderReference.Primordial, DexFileModule.make(new File(al)));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
scope.addToScope(ClassLoaderReference.Primordial, new JarFileModule(new JarFile(new File(al)))); scope.addToScope(ClassLoaderReference.Primordial, new JarFileModule(new JarFile(new File(al))));
} }
} }
@ -58,7 +59,7 @@ public class AndroidAnalysisScope {
scope.setLoaderImpl(ClassLoaderReference.Application, scope.setLoaderImpl(ClassLoaderReference.Application,
"com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); "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; return scope;
} }
@ -79,12 +80,11 @@ public class AndroidAnalysisScope {
String[] paths = classPath.split(File.pathSeparator); String[] paths = classPath.split(File.pathSeparator);
for (int i = 0; i < paths.length; i++) { for (int i = 0; i < paths.length; i++) {
if (paths[i].endsWith(".jar")) { // handle jar file if (paths[i].endsWith(".jar")
scope.addToScope(loader, new JarFile(paths[i])); || paths[i].endsWith(".apk")
} else if (paths[i].endsWith(".apk")
|| paths[i].endsWith(".dex")) { // Handle android file. || paths[i].endsWith(".dex")) { // Handle android file.
File f = new File(paths[i]); File f = new File(paths[i]);
scope.addToScope(loader, new DexFileModule(f)); scope.addToScope(loader, DexFileModule.make(f));
} else { } else {
File f = new File(paths[i]); File f = new File(paths[i]);
if (f.isDirectory()) { // handle directory FIXME not working if (f.isDirectory()) { // handle directory FIXME not working

View File

@ -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 * This method is called before pausing
*/ */
@ -1123,6 +1134,7 @@ public final class ActivityEP {
possibleEntryPoints.add(onUserLeaveHint); possibleEntryPoints.add(onUserLeaveHint);
possibleEntryPoints.add(onWindowAttributesChanged); possibleEntryPoints.add(onWindowAttributesChanged);
possibleEntryPoints.add(onWindowFocusChanged); possibleEntryPoints.add(onWindowFocusChanged);
possibleEntryPoints.add(onSharedPreferenceChanged);
} }
} }

View File

@ -3,6 +3,6 @@
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="source"/> <classpathentry kind="src" path="source"/>
<classpathentry kind="src" path="data"/> <classpathentry kind="src" path="data"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -1,9 +1,10 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true 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.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.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.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=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.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=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.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_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

View File

@ -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.eclipse.jdt.core;bundle-version="3.4.2",
org.junit;bundle-version="4.0.0", org.junit;bundle-version="4.0.0",
org.eclipse.core.runtime, org.eclipse.core.runtime,
org.eclipse.pde.core;bundle-version="3.6.0", org.eclipse.pde.core,
org.eclipse.platform;bundle-version="4.2.2" org.eclipse.platform,
org.eclipse.jdt.launching.macosx;resolution:=optional
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.7

View File

@ -3,3 +3,4 @@ source.. = source/,\
output.. = bin/ output.. = bin/
bin.includes = META-INF/,\ bin.includes = META-INF/,\
. .
jre.compilation.profile = JavaSE-1.7

File diff suppressed because one or more lines are too long

View File

@ -9,9 +9,9 @@
<version>1.3.4-SNAPSHOT</version> <version>1.3.4-SNAPSHOT</version>
</parent> </parent>
<artifactId>com.ibm.wala.ide.jdt.test</artifactId> <artifactId>com.ibm.wala.ide.jdt.test</artifactId>
<packaging>eclipse-test-plugin</packaging> <packaging>eclipse-test-plugin</packaging>
<profiles> <profiles>
<profile> <profile>
<id>macosx</id> <id>macosx</id>

View File

@ -1,6 +1,7 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true 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.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.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.compliance=1.7

View File

@ -16,8 +16,9 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources, org.eclipse.core.resources,
org.eclipse.jdt.core, org.eclipse.jdt.core,
org.eclipse.pde.core, org.eclipse.pde.core,
org.eclipse.ui.ide;bundle-version="3.8.2", org.eclipse.ui.ide,
org.eclipse.jdt.launching;bundle-version="3.6.101" org.eclipse.jdt.launching,
org.eclipse.jdt
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Export-Package: com.ibm.wala.cast.java.client, Export-Package: com.ibm.wala.cast.java.client,

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -1,9 +1,10 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true 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.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.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.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=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.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=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.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_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

View File

@ -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.pde.core;bundle-version="3.8.1",
org.eclipse.equinox.common;bundle-version="3.6.100", org.eclipse.equinox.common;bundle-version="3.6.100",
org.eclipse.core.runtime;bundle-version="3.8.0" org.eclipse.core.runtime;bundle-version="3.8.0"
Bundle-ActivationPolicy: lazy
Bundle-Activator: com.ibm.wala.ide.jsdt.tests.Activator Bundle-Activator: com.ibm.wala.ide.jsdt.tests.Activator
Export-Package: com.ibm.wala.ide.jsdt.tests Export-Package: com.ibm.wala.ide.jsdt.tests
Bundle-RequiredExecutionEnvironment: JavaSE-1.7

View File

@ -14,7 +14,7 @@
<booleanAttribute key="includeOptional" value="true"/> <booleanAttribute key="includeOptional" value="true"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/> <stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.ibm.wala.ide.jsdt.tests/src/com/ibm/wala/ide/jsdt/tests/WLProjectWebScopeTest.java"/> <listEntry value="/com.ibm.wala.worklight/src/com/ibm/wala/worklight/test/WLProjectWebScopeTest.java"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="1"/>
@ -24,9 +24,9 @@
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.ide.jsdt.tests.WLProjectWebScopeTest"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.worklight.test.WLProjectWebScopeTest"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.ide.jsdt.tests"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.worklight"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -XX:MaxPermSize=512m -Xmx2048m -ea -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -XX:MaxPermSize=512m -Xmx2048m -ea -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
<stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="pde.version" value="3.3"/>

View File

@ -27,4 +27,16 @@
</profile> </profile>
</profiles> </profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<reuseForks>false</reuseForks>
<forkCount>1</forkCount>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>

View File

@ -68,7 +68,7 @@ public abstract class AbstractJSProjectScopeTest {
return JavaScriptEclipseProjectPath.make(p, Collections.<Pair<String,Plugin>>emptySet()); return JavaScriptEclipseProjectPath.make(p, Collections.<Pair<String,Plugin>>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 @Test
public void testParsing() throws IOException, CoreException { public void testParsing() throws IOException, CoreException {
Set<ModuleEntry> mes = JsdtUtil.getJavaScriptCodeFromProject(project.projectName); Set<ModuleEntry> mes = JsdtUtil.getJavaScriptCodeFromProject(project.projectName);

View File

@ -2,6 +2,6 @@
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="source"/> <classpathentry kind="src" path="source"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View File

@ -1,9 +1,10 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true 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.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.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.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=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.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=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.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_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

View File

@ -22,6 +22,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.pde.core;bundle-version="3.8.1" org.eclipse.pde.core;bundle-version="3.8.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.wst.jsdt.internal.corext.callhierarchy
Export-Package: com.ibm.wala.cast.js.client, Export-Package: com.ibm.wala.cast.js.client,
com.ibm.wala.ide.jsdt, com.ibm.wala.ide.jsdt,
com.ibm.wala.ide.util com.ibm.wala.ide.util

View File

@ -54,6 +54,7 @@ import com.ibm.wala.ide.util.HeadlessUtil.EclipseCompiler;
import com.ibm.wala.ide.util.HeadlessUtil.Parser; import com.ibm.wala.ide.util.HeadlessUtil.Parser;
import com.ibm.wala.ipa.callgraph.AnalysisScope; import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.util.collections.HashSetFactory; 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.functions.Function;
import com.ibm.wala.util.graph.Graph; import com.ibm.wala.util.graph.Graph;
import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph; import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph;
@ -76,7 +77,7 @@ public class JsdtUtil {
public static Set<ModuleEntry> getJavaScriptCodeFromProject(String project) throws IOException, CoreException { public static Set<ModuleEntry> getJavaScriptCodeFromProject(String project) throws IOException, CoreException {
IJavaScriptProject p = JavaScriptHeadlessUtil.getJavaScriptProjectFromWorkspace(project); IJavaScriptProject p = JavaScriptHeadlessUtil.getJavaScriptProjectFromWorkspace(project);
JSCallGraphUtil.setTranslatorFactory(new CAstRhinoTranslatorFactory()); 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.<Pair<String,Plugin>>emptySet()).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS)));
List<Module> modules = s.getModules(JavaScriptTypes.jsLoader); List<Module> modules = s.getModules(JavaScriptTypes.jsLoader);
Set<ModuleEntry> mes = HashSetFactory.make(); Set<ModuleEntry> mes = HashSetFactory.make();

View File

@ -6,6 +6,7 @@
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.examples.drivers.SWTCallGraph"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.examples.drivers.SWTCallGraph"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-appJar ${resource_loc:/com.ibm.wala.core.testdata/JLex.jar}"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-appJar ${resource_loc:/com.ibm.wala.core.testdata/JLex.jar}"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.ide.tests"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.ibm.wala.ide.tests"/>

View File

@ -15,7 +15,9 @@ Require-Bundle: com.ibm.wala.core,
org.eclipse.core.resources, org.eclipse.core.resources,
org.eclipse.core.runtime, org.eclipse.core.runtime,
org.eclipse.jdt.core, 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-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: com.ibm.wala.ide.classloader, Export-Package: com.ibm.wala.ide.classloader,

View File

@ -201,6 +201,7 @@ public abstract class EclipseProjectPath<E, P> {
if (!model.isInSync() || model.isDisposed()) { if (!model.isInSync() || model.isDisposed()) {
model.load(); model.load();
} }
BundleDescription bd = model.getBundleDescription(); BundleDescription bd = model.getBundleDescription();
if (bd == null) { if (bd == null) {

View File

@ -97,7 +97,7 @@ public class AnnotationsReader extends AttributeReader {
@Override @Override
public String toString() { public String toString() {
return val.toString(); return String.valueOf(val);
} }
} }

View File

@ -10,6 +10,7 @@
*******************************************************************************/ *******************************************************************************/
package com.ibm.wala.util.functions; package com.ibm.wala.util.functions;
/** /**
*/ */
public interface Function<X,Y> { public interface Function<X,Y> {

View File

@ -224,6 +224,7 @@ public final class BitVectorIntSet implements MutableIntSet {
@Override @Override
public boolean hasNext() { public boolean hasNext() {
assert populationCount == bitVector.populationCount();
return count < populationCount; return count < populationCount;
} }

436
pom.xml
View File

@ -1,218 +1,230 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project <project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 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"> xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.ibm.wala</groupId> <groupId>com.ibm.wala</groupId>
<artifactId>WALA</artifactId> <artifactId>WALA</artifactId>
<version>1.3.4-SNAPSHOT</version> <version>1.3.4-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<properties> <properties>
<project-version>1.3.4-SNAPSHOT</project-version> <project-version>1.3.4-SNAPSHOT</project-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<build-alias>b000</build-alias> <build-alias>b000</build-alias>
<tycho-version>0.19.0</tycho-version> <tycho-version>0.19.0</tycho-version>
<tycho.scmUrl>scm:git:ssh://github.com:wala/WALA.git</tycho.scmUrl> <tycho.scmUrl>scm:git:ssh://github.com:wala/WALA.git</tycho.scmUrl>
</properties> </properties>
<modules>
<module>targets</module>
<modules> <module>com.ibm.wala-feature</module>
<module>targets</module> <module>com.ibm.wala.core</module>
<module>com.ibm.wala.shrike</module>
<module>com.ibm.wala.util</module>
<module>com.ibm.wala.core.testdata</module>
<module>com.ibm.wala.core.tests</module>
<module>com.ibm.wala.cast</module>
<module>com.ibm.wala.cast.test</module>
<module>com.ibm.wala.cast.java</module>
<module>com.ibm.wala.cast.java.test</module>
<module>com.ibm.wala.cast.java.test.data</module>
<module>com.ibm.wala.ide-feature</module>
<module>com.ibm.wala.ide</module>
<module>com.ibm.wala.ide.tests</module>
<module>com.ibm.wala.ide.jdt</module>
<module>com.ibm.wala.ide.jdt.test</module>
<module>com.ibm.wala.cast.js</module>
<module>com.ibm.wala.cast.js.html.nu_validator</module>
<module>com.ibm.wala.cast.js.test</module>
<module>com.ibm.wala.cast.js.test.data</module>
<module>com.ibm.wala.cast.js.rhino</module>
<module>com.ibm.wala.cast.js.rhino.test</module>
<module>com.ibm.wala.ide.jsdt</module>
<module>com.ibm.wala.ide.jsdt.tests</module>
<module>com.ibm.wala.dalvik</module>
<module>com.ibm.wala.dalvik.test</module>
<module>com.ibm.wala.scandroid</module>
<module>com.ibm.wala.cast.java.polyglot</module>
<module>com.ibm.wala.cast.java.polyglot.test</module>
<module>com.ibm.wala-repository</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho-version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<target>
<artifact>
<groupId>com.ibm.wala.target</groupId>
<artifactId>e44</artifactId>
<version>${project-version}</version>
</artifact>
</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgument>-err:-forbidden</compilerArgument>
<compilerArguments>
<properties>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</properties>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-source-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>attach-source</id>
<phase>process-classes</phase>
<goals>
<goal>plugin-source</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<format>'v'yyyyMMdd-HHmm'-${build-alias}'</format>
<archiveSite>false</archiveSite>
<sourceReferences>
<generate>true</generate>
</sourceReferences>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-sourceref-jgit</artifactId>
<version>${tycho-version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<module>com.ibm.wala-feature</module> <dependencies>
<module>com.ibm.wala.core</module> <dependency>
<module>com.ibm.wala.shrike</module> <type>eclipse-plugin</type>
<module>com.ibm.wala.util</module> <artifactId>org.eclipse.osgi.compatibility.state</artifactId>
<version>0.0.0</version>
<module>com.ibm.wala.core.testdata</module> </dependency>
<module>com.ibm.wala.core.tests</module> </dependencies>
<module>com.ibm.wala.dalvik</module>
<module>com.ibm.wala.dalvik.test</module>
<module>com.ibm.wala.scandroid</module>
<module>com.ibm.wala.cast</module>
<module>com.ibm.wala.cast.test</module>
<module>com.ibm.wala.cast.java</module>
<module>com.ibm.wala.cast.java.test</module>
<module>com.ibm.wala.cast.java.test.data</module>
<module>com.ibm.wala.cast.java.polyglot</module>
<module>com.ibm.wala.cast.java.polyglot.test</module>
<module>com.ibm.wala.cast.js</module>
<module>com.ibm.wala.cast.js.html.nu_validator</module>
<module>com.ibm.wala.cast.js.test</module>
<module>com.ibm.wala.cast.js.test.data</module>
<module>com.ibm.wala.cast.js.rhino</module>
<module>com.ibm.wala.cast.js.rhino.test</module>
<module>com.ibm.wala.ide-feature</module>
<module>com.ibm.wala.ide</module>
<module>com.ibm.wala.ide.tests</module>
<module>com.ibm.wala.ide.jdt</module>
<module>com.ibm.wala.ide.jsdt</module>
<module>com.ibm.wala.ide.jsdt.tests</module>
<module>com.ibm.wala.ide.jdt.test</module>
<module>com.ibm.wala-repository</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho-version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<target>
<artifact>
<groupId>com.ibm.wala.target</groupId>
<artifactId>e42</artifactId>
<version>${project-version}</version>
</artifact>
</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgument>-err:-forbidden</compilerArgument>
<compilerArguments>
<properties>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</properties>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-source-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>attach-source</id>
<phase>process-classes</phase>
<goals>
<goal>plugin-source</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<format>'v'yyyyMMdd-HHmm'-${build-alias}'</format>
<archiveSite>false</archiveSite>
<sourceReferences>
<generate>true</generate>
</sourceReferences>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-sourceref-jgit</artifactId>
<version>${tycho-version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<useuiharness>false</useuiharness>
<useuithread>false</useuithread>
<providerHint>junit47</providerHint>
<argLine>${tycho.test.jvmArgs}</argLine>
<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
<!-- The tycho-source-feature-plugin needs to be place before the tycho-p2-plugin, as both plugins' goals bind to the same phase -->
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-source-feature-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>generate-source-feature</id>
<goals>
<goal>source-feature</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<!-- Don't attach (default) metadata before the "generate-source-feature" execution. -->
<id>default-p2-metadata-default</id>
<configuration>
<attachP2Metadata>false</attachP2Metadata>
</configuration>
</execution>
<execution>
<!-- Do attach metadata after the "generate-source-feature" execution. -->
<id>attach-p2-metadata</id>
<phase>package</phase>
<goals>
<goal>p2-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho-version}</version>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-repository-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<includeAllDependencies>false</includeAllDependencies>
</configuration>
</plugin>
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>maven-download-plugin</artifactId>
<version>1.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>sonatype-public-repository</id>
<url>https://oss.sonatype.org/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
<useuiharness>false</useuiharness>
<useuithread>false</useuithread>
<providerHint>junit47</providerHint>
<argLine>${tycho.test.jvmArgs}</argLine>
<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
<!-- The tycho-source-feature-plugin needs to be place before the tycho-p2-plugin, as both plugins' goals bind to the same phase -->
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-source-feature-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>generate-source-feature</id>
<goals>
<goal>source-feature</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<!-- Don't attach (default) metadata before the "generate-source-feature" execution. -->
<id>default-p2-metadata-default</id>
<configuration>
<attachP2Metadata>false</attachP2Metadata>
</configuration>
</execution>
<execution>
<!-- Do attach metadata after the "generate-source-feature" execution. -->
<id>attach-p2-metadata</id>
<phase>package</phase>
<goals>
<goal>p2-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho-version}</version>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-repository-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<includeAllDependencies>true</includeAllDependencies>
</configuration>
</plugin>
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>maven-download-plugin</artifactId>
<version>1.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>sonatype-public-repository</id>
<url>https://oss.sonatype.org/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project> </project>

View File

@ -1,30 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?><target name="WALA Eclipse Luna Target Platform" sequenceNumber="130"> <?pde version="3.8"?><target name="WALA Eclipse Luna Target Platform" sequenceNumber="130">
<locations> <locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.e4.rcp.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.core.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.core.ssl.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.filetransfer.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.filetransfer.httpclient4.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ecf.filetransfer.ssl.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.common.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.ecore.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/> <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.p2.core.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.p2.extras.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.p2.rcp.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.p2.user.ui.feature.group" version="0.0.0"/>
<unit id="org.eclipse.help.feature.group" version="0.0.0"/>
<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
<unit id="org.eclipse.jdt.source.feature.group" version="0.0.0"/>
<unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
<unit id="org.eclipse.platform.feature.group" version="0.0.0"/>
<unit id="org.eclipse.rcp.feature.group" version="0.0.0"/>
<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
<unit id="org.eclipse.wst.jsdt.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.wst.web_ui.feature.feature.group" version="0.0.0"/> <unit id="org.eclipse.wst.web_ui.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.wst.jsdt.feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.wst.jsdt.ui" version="0.0.0"/>
<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
<unit id="org.eclipse.jdt.source.feature.group" version="0.0.0"/>
<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
<unit id="org.eclipse.osgi" version="0.0.0"/>
<unit id="org.eclipse.e4.rcp.feature.group" version="0.0.0"/>
<repository location="http://download.eclipse.org/releases/luna"/> <repository location="http://download.eclipse.org/releases/luna"/>
</location> </location>
</locations> </locations>