Manual merge.
This commit is contained in:
commit
3d5dec0b0c
|
@ -0,0 +1,6 @@
|
||||||
|
((groovy-mode
|
||||||
|
(c-file-style . "bsd")))
|
||||||
|
|
||||||
|
;; Local variables:
|
||||||
|
;; flycheck-disabled-checkers: (emacs-lisp emacs-lisp-checkdoc)
|
||||||
|
;; End:
|
|
@ -4,42 +4,48 @@
|
||||||
*.swp
|
*.swp
|
||||||
*/bin/
|
*/bin/
|
||||||
*/bin/*
|
*/bin/*
|
||||||
|
*/build/
|
||||||
*~
|
*~
|
||||||
|
.classpath
|
||||||
.metadata/
|
.metadata/
|
||||||
com.ibm.wala.cast/lib/
|
.project
|
||||||
com.ibm.wala.cast.java.jdt.test/
|
/*/.settings/org.eclipse.buildship.core.prefs
|
||||||
com.ibm.wala.cast.java.polyglot/lib/
|
/.gradle/
|
||||||
com.ibm.wala.cast.java.test.data/src/JLex/
|
/.settings/org.eclipse.buildship.core.prefs
|
||||||
com.ibm.wala.cast.java.test/testdata/
|
/.vscode/settings.json
|
||||||
com.ibm.wala.cast.js.html.nu_validator/lib/
|
/build/
|
||||||
com.ibm.wala.cast.js.nodejs/lib/
|
/com.ibm.wala.*/out/
|
||||||
com.ibm.wala.cast.js.rhino.test/*.dump
|
/com.ibm.wala.cast.java.jdt.test/
|
||||||
com.ibm.wala.cast.js.rhino.test/*.html*
|
/com.ibm.wala.cast.java.polyglot/lib/
|
||||||
com.ibm.wala.cast.js.rhino.test/2009_swine_flu_outbreak
|
/com.ibm.wala.cast.java.test.data/src/JLex/
|
||||||
com.ibm.wala.cast.js.rhino.test/?game*
|
/com.ibm.wala.cast.java.test/testdata/
|
||||||
com.ibm.wala.cast.js.rhino.test/BunnyHunt
|
/com.ibm.wala.cast.js.html.nu_validator/lib/
|
||||||
com.ibm.wala.cast.js.rhino.test/digg_attack
|
/com.ibm.wala.cast.js.nodejs/lib/
|
||||||
com.ibm.wala.cast.js.rhino.test/game.php*
|
/com.ibm.wala.cast.js.rhino.test/*.dump
|
||||||
com.ibm.wala.cast.js.rhino.test/xxxx
|
/com.ibm.wala.cast.js.rhino.test/*.html*
|
||||||
com.ibm.wala.cast.js.rhino/lib/
|
/com.ibm.wala.cast.js.rhino.test/2009_swine_flu_outbreak
|
||||||
com.ibm.wala.cast.js.test.data/examples-src/ajaxslt/
|
/com.ibm.wala.cast.js.rhino.test/?game*
|
||||||
com.ibm.wala.cast.js.test/examples-src/ajaxslt/
|
/com.ibm.wala.cast.js.rhino.test/BunnyHunt
|
||||||
com.ibm.wala.cast.js/lib/
|
/com.ibm.wala.cast.js.rhino.test/digg_attack
|
||||||
com.ibm.wala.core.testdata/*.jar
|
/com.ibm.wala.cast.js.rhino.test/game.php*
|
||||||
com.ibm.wala.core.testdata/@dot/
|
/com.ibm.wala.cast.js.rhino.test/xxxx
|
||||||
com.ibm.wala.core.testdata/lib/
|
/com.ibm.wala.cast.js.rhino/lib/
|
||||||
com.ibm.wala.core.testdata/ocaml/
|
/com.ibm.wala.cast.js.test.data/examples-src/ajaxslt/
|
||||||
com.ibm.wala.core.tests/dat/wala.examples.properties
|
/com.ibm.wala.cast.js.test/examples-src/ajaxslt/
|
||||||
com.ibm.wala.core.tests/report
|
/com.ibm.wala.cast.js/lib/
|
||||||
com.ibm.wala.core/@dot
|
/com.ibm.wala.cast/lib/
|
||||||
com.ibm.wala.core/com.ibm.wala.core*.jar
|
/com.ibm.wala.core.testdata/*.jar
|
||||||
com.ibm.wala.core/dat/wala.properties
|
/com.ibm.wala.core.testdata/@dot/
|
||||||
com.ibm.wala.dalvik/src/logback.xml
|
/com.ibm.wala.core.testdata/lib/
|
||||||
com.ibm.wala.ide.jdt.test/testdata/
|
/com.ibm.wala.core.tests/report
|
||||||
edu.kit.wala.smali.test/out/
|
/com.ibm.wala.core/@dot
|
||||||
target/
|
/com.ibm.wala.core/com.ibm.wala.core*.jar
|
||||||
com.ibm.wala.dalvik.test/data/sample.cup
|
/com.ibm.wala.core/dat/wala.properties
|
||||||
com.ibm.wala.dalvik.test/parser.java
|
/com.ibm.wala.dalvik.test/data/sample.cup
|
||||||
com.ibm.wala.dalvik.test/report
|
/com.ibm.wala.dalvik.test/parser.java
|
||||||
com.ibm.wala.dalvik.test/sym.java
|
/com.ibm.wala.dalvik.test/report
|
||||||
|
/com.ibm.wala.dalvik.test/sym.java
|
||||||
|
/com.ibm.wala.ide.jdt.test/testdata/
|
||||||
|
/edu.kit.wala.smali.test/out/
|
||||||
results
|
results
|
||||||
|
target/
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
*.iml
|
||||||
|
/libraries/*.xml
|
||||||
|
/modules.xml
|
||||||
|
/tasks.xml
|
||||||
|
/usage.statistics.xml
|
||||||
|
/workspace.xml
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GradleSettings">
|
||||||
|
<option name="linkedExternalProjectsSettings">
|
||||||
|
<GradleProjectSettings>
|
||||||
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/buildSrc" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala-repository" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.java" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.java.ecj" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.java.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.java.test.data" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.html.nu_validator" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.nodejs" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.nodejs.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.rhino" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.rhino.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.js.test.data" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.cast.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.core" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.core.testdata" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.core.tests" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.dalvik" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.dalvik.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide.jdt" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide.jdt.test" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide.jsdt" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide.jsdt.tests" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide.tests" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.ide_feature" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.scandroid" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.shrike" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.tests.ide_feature" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.tests_feature" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala.util" />
|
||||||
|
<option value="$PROJECT_DIR$/com.ibm.wala_feature" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
<option name="useAutoImport" value="true" />
|
||||||
|
</GradleProjectSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="Java 1.8" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="After Opening Pristine Project" type="GradleRunConfiguration" factoryName="Gradle" singleton="true">
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="prepareIntelliJIDEA" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" value="" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
319
.travis.yml
319
.travis.yml
|
@ -1,30 +1,23 @@
|
||||||
language: android
|
sudo: false
|
||||||
android:
|
android:
|
||||||
components:
|
components:
|
||||||
- build-tools-26.0.2
|
- build-tools-26.0.2
|
||||||
jdk: oraclejdk8
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- realpath
|
- realpath
|
||||||
- xvfb
|
- xvfb
|
||||||
before_install:
|
before_install:
|
||||||
- echo $ANDROID_HOME
|
- set -e
|
||||||
- git clone --depth=1 https://github.com/secure-software-engineering/DroidBench.git /tmp/DroidBench
|
- source "travis/before-install-$BUILD_SYSTEM"
|
||||||
- export M2_HOME=$HOME/apache-maven-3.5.0
|
install: source "travis/install-$BUILD_SYSTEM"
|
||||||
- if [ ! -d $M2_HOME/bin ]; then curl https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz | tar zxf - -C $HOME; fi
|
script: source "travis/script-$BUILD_SYSTEM"
|
||||||
- export PATH=$M2_HOME/bin:$PATH
|
before_cache: source "travis/before-cache-$BUILD_SYSTEM"
|
||||||
install:
|
|
||||||
- mvn clean verify -DskipTests=true -B -q
|
|
||||||
script:
|
|
||||||
- xvfb-run mvn clean install -B -q
|
|
||||||
- bash ./dependent-projects-trigger.sh $AUTH_TOKEN
|
|
||||||
- mvn javadoc:aggregate -B -q
|
|
||||||
- bash ./upload-javascript.sh $GH_TOKEN
|
|
||||||
- ./build-maven-jars.py "install -Dgpg.skip"
|
|
||||||
sudo: false
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
|
- "$HOME/.goomph"
|
||||||
|
- "$HOME/.gradle/caches"
|
||||||
|
- "$HOME/.gradle/wrapper"
|
||||||
- "$HOME/.m2"
|
- "$HOME/.m2"
|
||||||
- "$HOME/apache-maven-3.5.0"
|
- "$HOME/apache-maven-3.5.0"
|
||||||
- "$TRAVIS_BUILD_DIR/com.ibm.wala.core.testdata/ocaml/ocamljava-2.0-alpha1/lib"
|
- "$TRAVIS_BUILD_DIR/com.ibm.wala.core.testdata/ocaml/ocamljava-2.0-alpha1/lib"
|
||||||
|
@ -32,3 +25,297 @@ env:
|
||||||
global:
|
global:
|
||||||
- secure: KcugjQYnBqeZ7XenZD5QY7jhekVPO0QpQyjDUteLytaokhyRK2g6eNvr/pPerN2uWUvsPwO18P9F+oOupge1cpPZf4cEY8RzLIromyUoRWd6JA0SKciUYdN2kSqnC4uZSJGXeGLoroyEEL4Q2sqimpkbIGxgxYtVniWgJULOyR4=
|
- secure: KcugjQYnBqeZ7XenZD5QY7jhekVPO0QpQyjDUteLytaokhyRK2g6eNvr/pPerN2uWUvsPwO18P9F+oOupge1cpPZf4cEY8RzLIromyUoRWd6JA0SKciUYdN2kSqnC4uZSJGXeGLoroyEEL4Q2sqimpkbIGxgxYtVniWgJULOyR4=
|
||||||
- secure: jacvGPYX4ugG/HgwJEEpWnllWsS/ipX+qRJ7qM5mbDYryeqsz0eiaxBxQ6IpDyj0v6O4DUi74lSQs/UxCWcUxvOn/5AweCZfoF1U8vt1xivanR4MbC2kr6rJ6ohICuJ4PHDS4IffncgaP3Y8cfExHq6+d0tbibYkjRIiMUGpSik=
|
- secure: jacvGPYX4ugG/HgwJEEpWnllWsS/ipX+qRJ7qM5mbDYryeqsz0eiaxBxQ6IpDyj0v6O4DUi74lSQs/UxCWcUxvOn/5AweCZfoF1U8vt1xivanR4MbC2kr6rJ6ohICuJ4PHDS4IffncgaP3Y8cfExHq6+d0tbibYkjRIiMUGpSik=
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=maven
|
||||||
|
language: android
|
||||||
|
jdk: oraclejdk8
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle
|
||||||
|
language: java
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.ecj
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.test.data
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.html.nu_validator
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.nodejs
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.nodejs.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.rhino
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.rhino.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.test.data
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core.testdata
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core.tests
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.dalvik
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.dalvik.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jdt
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jdt.test
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jsdt
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jsdt.tests
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.tests
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.scandroid
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.shrike
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: linux
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.util
|
||||||
|
language: java
|
||||||
|
jdk: oraclejdk8
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.ecj
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.java.test.data
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.html.nu_validator
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.nodejs
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.nodejs.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.rhino
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.rhino.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.js.test.data
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.cast.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core.testdata
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.core.tests
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.dalvik
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.dalvik.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jdt
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jdt.test
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jsdt
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.jsdt.tests
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.ide.tests
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.scandroid
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.shrike
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8.3
|
||||||
|
env: BUILD_SYSTEM=gradle BUILD_ONLY_SUBMODULE=com.ibm.wala.util
|
||||||
|
language: java
|
||||||
|
if: type = cron
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.buildship.core.launch.runconfiguration">
|
||||||
|
<listAttribute key="arguments"/>
|
||||||
|
<booleanAttribute key="build_scans_enabled" value="false"/>
|
||||||
|
<stringAttribute key="gradle_distribution" value="GRADLE_DISTRIBUTION(WRAPPER)"/>
|
||||||
|
<stringAttribute key="gradle_user_home" value=""/>
|
||||||
|
<listAttribute key="jvm_arguments"/>
|
||||||
|
<booleanAttribute key="offline_mode" value="false"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||||
|
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="override_workspace_settings" value="false"/>
|
||||||
|
<booleanAttribute key="show_console_view" value="true"/>
|
||||||
|
<booleanAttribute key="show_execution_view" value="true"/>
|
||||||
|
<listAttribute key="tasks">
|
||||||
|
<listEntry value="afterEclipseBuildshipImport"/>
|
||||||
|
</listAttribute>
|
||||||
|
<stringAttribute key="working_dir" value="${workspace_loc:/com.ibm.wala}"/>
|
||||||
|
</launchConfiguration>
|
|
@ -0,0 +1,340 @@
|
||||||
|
This document describes some WALA-specific aspects of our new Gradle
|
||||||
|
build system, plus a few general Gradle features that may be of
|
||||||
|
particular interest to WALA developers. However, it is not a Gradle
|
||||||
|
tutorial.
|
||||||
|
|
||||||
|
# Pros and Cons of Switching to Gradle
|
||||||
|
|
||||||
|
## Selected Gradle Advantages in Brief
|
||||||
|
|
||||||
|
- [more comprehensive management of external
|
||||||
|
dependencies](#comprehensive-external-dependencies)
|
||||||
|
- faster builds using [parallel task
|
||||||
|
execution](https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:parallel_execution)
|
||||||
|
and [user-scoped
|
||||||
|
caching](https://docs.gradle.org/current/userguide/build_cache.html)
|
||||||
|
(both enabled by default)
|
||||||
|
- [trustworthy dependencies for incremental
|
||||||
|
builds](#trustworthy-dependencies-for-incremental-builds)
|
||||||
|
- [composite builds](#composite-builds) for easier integration of WALA
|
||||||
|
into larger projects
|
||||||
|
- [automated Travis CI testing on macOS](#travis-ci-macos)
|
||||||
|
|
||||||
|
## Known Shortcomings
|
||||||
|
|
||||||
|
The Gradle build system is not yet ready to replace Maven, due to a
|
||||||
|
few [known shortcomings](https://github.com/liblit/WALA/milestone/1).
|
||||||
|
Paramount among these is that [Gradle WALA builds do not yet package
|
||||||
|
up Eclipse plug-ins / features in the proper
|
||||||
|
manner](https://github.com/liblit/WALA/issues/6). I have [poked at
|
||||||
|
this a
|
||||||
|
bit](https://github.com/liblit/WALA/tree/gradle-artifact-publishing),
|
||||||
|
but I simply do not understand Eclipse and/or OSGi well enough to get
|
||||||
|
the job done. I welcome help from anyone with the right knowledge!
|
||||||
|
|
||||||
|
Either Gradle or Maven can be used to build WALA from the command
|
||||||
|
line. However, it was not possible to extend this dual-build-system
|
||||||
|
support to Eclipse. Working with WALA in Eclipse *requires* [doing
|
||||||
|
things the Gradle way](#eclipse). Fortunately, this is rather
|
||||||
|
seamless; I see no reason why an Eclipse-using WALA developer should
|
||||||
|
need to avoid this switch.
|
||||||
|
|
||||||
|
As noted [below](#classpath-and-project-as-generated-files), Eclipse
|
||||||
|
`.classpath` and `.project` files are now generated rather than being
|
||||||
|
repository-tracked source files. However, a few Maven-run tests
|
||||||
|
depend on having certain of these files present. One way to create
|
||||||
|
them is to [import WALA into
|
||||||
|
Eclipse](#importing-wala-projects-into-eclipse) before starting your
|
||||||
|
Maven tests. If you prefer a non-interactive approach, you can
|
||||||
|
instead run `./gradlew prepareMavenBuild` before starting your Maven
|
||||||
|
tests.
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
## External Dependencies: Patience is a Virtue
|
||||||
|
|
||||||
|
Gradle downloads many packages and supporting Java libraries as
|
||||||
|
needed. Your first Gradle build may take a long time. On a fast
|
||||||
|
workstation with a University-grade network and no local caches, my
|
||||||
|
initial run of `./gradlew assemble processTestResources` took five
|
||||||
|
minutes. On a decent laptop with residential DSL and no local caches,
|
||||||
|
the same initial build took twenty minutes. Fortunately, user- and
|
||||||
|
project-level Gradle caches will make incremental rebuilds much
|
||||||
|
faster. Rerunning `./gradlew assemble processTestResources` with a
|
||||||
|
warm cache in an already-built tree takes under three seconds.
|
||||||
|
|
||||||
|
Maven is the same, really. You may already have most of what Maven
|
||||||
|
needs downloaded and cached locally, but your first Maven WALA build
|
||||||
|
was probably slow as well. Recent Travis CI runs have showed Gradle
|
||||||
|
and Maven builds completing in fifteen to twenty minutes, without
|
||||||
|
significant variation between the two build systems.
|
||||||
|
|
||||||
|
<a id="comprehensive-external-dependencies"/>The good news is that the
|
||||||
|
Gradle build knows about all of its external dependencies and will
|
||||||
|
download them as needed. This even includes some complex dependencies
|
||||||
|
that the Maven build does not automate. For example, the Gradle build
|
||||||
|
will automatically gather required Android SDK components: setting
|
||||||
|
`$ANDROID_HOME` is not needed. Gradle builds will also download
|
||||||
|
`/tmp/DroidBench` when needed to run tests; the Maven build system
|
||||||
|
required that each developer do this by hand.
|
||||||
|
|
||||||
|
## Eclipse
|
||||||
|
|
||||||
|
### One-Time Eclipse Configuration
|
||||||
|
|
||||||
|
To work with WALA inside Eclipse, first **install Eclipse Buildship**
|
||||||
|
using either [the Eclipse
|
||||||
|
Marketplace](http://www.vogella.com/tutorials/EclipseGradle/article.html#installation-via-the-marketplace)
|
||||||
|
or [the Eclipse update
|
||||||
|
manager](http://www.vogella.com/tutorials/EclipseGradle/article.html#installation-via-the-eclipse-update-manager).
|
||||||
|
Buildship integrates Eclipse with Gradle, much like how M2Eclipse
|
||||||
|
integrates Eclipse with Maven. Restart Eclipse after installing this
|
||||||
|
feature.
|
||||||
|
|
||||||
|
### Importing WALA Projects Into Eclipse
|
||||||
|
|
||||||
|
Once you are running a Buildship-enabled Eclipse, **[use the “Existing
|
||||||
|
Gradle Project” import
|
||||||
|
wizard](http://www.vogella.com/tutorials/EclipseGradle/article.html#import-an-existing-gradle-project)
|
||||||
|
to import WALA into Eclipse.** Select and import the topmost level of
|
||||||
|
your WALA source tree. On the “Import Options” page of the import
|
||||||
|
wizard, leave all settings at their defaults: the “Override workspace
|
||||||
|
settings” option should be off, and the grayed-out “Gradle
|
||||||
|
distribution” choice should be set to “Gradle wrapper”. You do not
|
||||||
|
need to select each of WALA’s sub-projects; import only the top-level
|
||||||
|
WALA source tree, and the rest will follow.
|
||||||
|
|
||||||
|
After the lengthy import process completes, **use “Run → After
|
||||||
|
Importing WALA Into Eclipse” to perform some post-import cleanup and
|
||||||
|
configuration.** Immediately after importing, you may see some errors
|
||||||
|
in the Eclipse “Problems” view. These should all go away after
|
||||||
|
running the “After Importing WALA Into Eclipse” step.
|
||||||
|
|
||||||
|
Note: a pristine WALA source tree is *not* pre-configured as a group
|
||||||
|
of Eclipse projects. Using the standard Eclipse “Existing Projects
|
||||||
|
into Workspace” import wizard will not work correctly. You must [use
|
||||||
|
the “Existing Gradle Project” import
|
||||||
|
wizard](http://www.vogella.com/tutorials/EclipseGradle/article.html#import-an-existing-gradle-project)
|
||||||
|
instead.
|
||||||
|
|
||||||
|
### `.classpath` and `.project` as Generated Files
|
||||||
|
|
||||||
|
You will find no `.classpath` or `.project` files anywhere in [the
|
||||||
|
Gradle fork of WALA’s git repository](https://github.com/liblit/WALA).
|
||||||
|
Importing using the “Existing Gradle Project” wizard creates these
|
||||||
|
Eclipse project configuration files automatically based on the
|
||||||
|
underlying Gradle configuration.
|
||||||
|
|
||||||
|
Therefore, when working with Eclipse + Gradle, you should **treat
|
||||||
|
`.classpath` and `.project` files as *generated* artifacts,** not as
|
||||||
|
files to edit directly or through the Eclipse project configuration
|
||||||
|
GUI. For example, avoid using the Java Build Path settings dialog to
|
||||||
|
make changes that are stored in a `.classpath` file: the modified
|
||||||
|
`.classpath` file is not git-tracked, so your changes will eventually
|
||||||
|
be lost or overwritten.
|
||||||
|
|
||||||
|
The right way to change the contents of any of a `.classpath` or
|
||||||
|
`.project` file is to change the Gradle configuration such that the
|
||||||
|
generated `.classpath` and `.project` files will have the desired
|
||||||
|
contents, likely by using [Gradle’s `eclipse`
|
||||||
|
plugin](https://docs.gradle.org/current/userguide/eclipse_plugin.html).
|
||||||
|
A few WALA sub-projects already use this: look for `eclipse.project`
|
||||||
|
in `*/build.gradle` for examples.
|
||||||
|
|
||||||
|
## IntelliJ IDEA
|
||||||
|
|
||||||
|
### Opening WALA in IntelliJ IDEA
|
||||||
|
|
||||||
|
WALA comes preconfigured as an openable IntelliJ IDEA project. Open
|
||||||
|
the top-level WALA directory as a project; it should have a
|
||||||
|
distinctive badge on its folder icon marking it as a directory
|
||||||
|
containing a recognized IntelliJ IDEA project. Do *not* open the
|
||||||
|
top-level WALA `build.gradle` in that directory as a project: this
|
||||||
|
will begin an “Import Project from Gradle” process that is *not* the
|
||||||
|
recommended way to bring WALA up in IntelliJ IDEA.
|
||||||
|
|
||||||
|
The first time you open the WALA project, IntelliJ IDEA will
|
||||||
|
synchronize its project model with the Gradle build configuration,
|
||||||
|
including downloading some large supporting libraries. After the
|
||||||
|
lengthy import process completes, **use “Run → Run… → After Opening
|
||||||
|
Pristine Project” to perform some post-import configuration.** This
|
||||||
|
also can take tens of minutes, but is only necessary in a clean,
|
||||||
|
never-previously-built tree. Immediately after importing, you may see
|
||||||
|
some Java compilation errors in the IntelliJ IDEA “Messages” view.
|
||||||
|
These should all go away after running the “After Opening Pristine
|
||||||
|
Project” step. [Be
|
||||||
|
patient](#external-dependencies-patience-is-a-virtue) during the
|
||||||
|
initial project open and also during the “After Opening Pristine
|
||||||
|
Project” step, especially if you have a slow network connection.
|
||||||
|
|
||||||
|
If you prefer a non-interactive approach, instead of using “After
|
||||||
|
Opening Pristine Project” you can run `./gradlew prepareIntelliJIDEA`
|
||||||
|
either before or after opening WALA in IntelliJ IDEA.
|
||||||
|
|
||||||
|
### Benign Warning About Non-Managed Maven Project
|
||||||
|
|
||||||
|
Each time you open the WALA project, IntelliJ IDEA may report
|
||||||
|
“Non-managed pom.xml file found” in its event log. This arises
|
||||||
|
because WALA supports both Gradle and Maven, but WALA in IntelliJ IDEA
|
||||||
|
needs only the Gradle configuration. You can safely ignore this
|
||||||
|
notification, permanently disable it using the offered “Disable
|
||||||
|
notification” link, or even disable the IntelliJ IDEA Maven plugin
|
||||||
|
entirely if you have no other need for it.
|
||||||
|
|
||||||
|
### Project Configuration as Derived Model
|
||||||
|
|
||||||
|
IntelliJ IDEA automatically derives its project models from the Gradle
|
||||||
|
build configuration, including all information about both internal and
|
||||||
|
external build dependencies. However, this synchronization only goes
|
||||||
|
in one direction: from Gradle to IntelliJ IDEA, not from IntelliJ IDEA
|
||||||
|
back into Gradle. If you manipulate the project structure using the
|
||||||
|
IntelliJ IDEA’s user interface, your changes will likely be
|
||||||
|
overwritten the next time IntelliJ IDEA scans the Gradle build
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
This particularly applies to settings found in the “Modules” and
|
||||||
|
“Libraries” sections of the “Project Structure” dialog. The right way
|
||||||
|
to change module and library settings is to change the Gradle
|
||||||
|
configuration such that the *derived* IntelliJ IDEA model is what you
|
||||||
|
want it to be.
|
||||||
|
|
||||||
|
## Gradle Command Line
|
||||||
|
|
||||||
|
You do not need to install Gradle separately. **WALA includes its own
|
||||||
|
copy of Gradle, available as the `gradlew` script in the top-level
|
||||||
|
WALA directory.** Use this script for all command-line Gradle actions.
|
||||||
|
For example, to compile all of WALA’s main (non-test) code and gather
|
||||||
|
it into jar archives, run `./gradlew assemble`.
|
||||||
|
|
||||||
|
In general, most Gradle-generated artifacts will appear somewhere
|
||||||
|
under `*/build`. For example the jar archives created by the
|
||||||
|
`assemble` task can be found as `*/build/libs/*.jar`. Note, however,
|
||||||
|
that Eclipse-generated artifacts will still appear in the same places
|
||||||
|
as before, such as `*/bin` and `*/target`.
|
||||||
|
|
||||||
|
### Trustworthy Dependencies For Incremental Builds
|
||||||
|
|
||||||
|
Gradle has excellent understanding of task and file dependencies. You
|
||||||
|
can trust it to perform incremental rebuilds rather than always
|
||||||
|
rebuilding from scratch. If you are used to always running `mvn clean
|
||||||
|
compile` instead of `mvn compile`, or `mvn clean install` instead of
|
||||||
|
`mvn install`, I recommend that you drop `clean` as a reflexive extra
|
||||||
|
step and **trust Gradle to do incremental builds correctly.**
|
||||||
|
|
||||||
|
### Favorite Build Tasks
|
||||||
|
|
||||||
|
Some useful Gradle tasks include:
|
||||||
|
|
||||||
|
- `assemble`: build WALA’s main (non-test) code
|
||||||
|
|
||||||
|
- `build`: build all WALA code and run all automated tests
|
||||||
|
|
||||||
|
- `javadoc`: build all Javadoc documentation
|
||||||
|
|
||||||
|
- `publishToMavenLocal`: install WALA’s jar files under `~/.m2`
|
||||||
|
|
||||||
|
- `clean`: remove all Gradle-generated artifacts
|
||||||
|
|
||||||
|
### Tasks in Specific Sub-Projects
|
||||||
|
|
||||||
|
When you run `./gradlew` in the top-level WALA directory, any tasks
|
||||||
|
you list will be built in all sub-projects. For example, `./gradlew
|
||||||
|
assemble` builds all non-test WALA jars in all sub-projects. If you
|
||||||
|
want to build tasks only in specific sub-projects, you have two options:
|
||||||
|
|
||||||
|
1. Give the fully-qualified name of the sub-project task. For
|
||||||
|
example, to assemble only the Dalvik jar, you could run `./gradlew
|
||||||
|
:com.ibm.wala.dalvik:assemble`.
|
||||||
|
|
||||||
|
1. Run Gradle from within some sub-project directory. For example, to
|
||||||
|
assemble only the Dalvik jar, you could `cd com.ibm.wala.dalvik`
|
||||||
|
and then run `../gradlew assemble`. Note the proper relative path
|
||||||
|
to the top-level Gradle script: `../gradle` instead of `./gradlew`.
|
||||||
|
|
||||||
|
### Task Name Abbreviation
|
||||||
|
|
||||||
|
[Any build task can be
|
||||||
|
abbreviated](https://docs.gradle.org/current/userguide/command_line_interface.html#_task_name_abbreviation)
|
||||||
|
by shortening each camel-case-delimited word in its name. For
|
||||||
|
example, the `processTestResources` task can probably be abbreviated
|
||||||
|
as `procTeRes` or even `pTR`.
|
||||||
|
|
||||||
|
### Useful Command-Line Flags
|
||||||
|
|
||||||
|
Among Gradle’s command-line flags, I have found the following
|
||||||
|
particularly useful:
|
||||||
|
|
||||||
|
- [`--continue`](https://docs.gradle.org/current/userguide/command_line_interface.html#sec:continue_build_on_failure):
|
||||||
|
keep building non-dependent sub-tasks even after an initial failure.
|
||||||
|
Especially useful in conjunction with the `build` or `test` tasks to
|
||||||
|
see multiple test failures rather than giving up after the first
|
||||||
|
failure.
|
||||||
|
|
||||||
|
- [`-t`,
|
||||||
|
`--continuous`](https://docs.gradle.org/current/userguide/command_line_interface.html#_continuous_build):
|
||||||
|
keep Gradle process running and re-execute the given tasks whenever
|
||||||
|
input files change. Similar to Eclipse’s behavior of updating the
|
||||||
|
build whenever you change and save a file.
|
||||||
|
|
||||||
|
- [`--tests=...`](https://docs.gradle.org/current/userguide/java_plugin.html#test_filtering):
|
||||||
|
run only the selected tests. Use in conjunction with the `build` or
|
||||||
|
`test` tasks for faster turnaround if you are focusing on getting
|
||||||
|
just one or a few failing tests to pass.
|
||||||
|
|
||||||
|
- [`--scan`](https://scans.gradle.com/): upload a detailed report of
|
||||||
|
the build process to a Gradle-hosted server for further exploration
|
||||||
|
and analysis. The only security here is the obscurity of the
|
||||||
|
generated URL for the build report. If you are not concerned about
|
||||||
|
potentially making your build details public, then `--scan` is a
|
||||||
|
good way to gain insights into why Gradle did what it did, and how
|
||||||
|
long each piece took.
|
||||||
|
|
||||||
|
### Composite Builds
|
||||||
|
|
||||||
|
Gradle’s [composite
|
||||||
|
builds](https://docs.gradle.org/current/userguide/composite_builds.html)
|
||||||
|
allow a Gradle-managed project to recursively include other
|
||||||
|
Gradle-managed projects, with Gradle managing the entire build process
|
||||||
|
in a coherent, integrated manner. Thus, if you use Gradle to build
|
||||||
|
your WALA-based project, you can easily have it use WALA from your
|
||||||
|
own, private WALA tree instead of from `~/.m2` or the public Maven
|
||||||
|
repository.
|
||||||
|
|
||||||
|
This is especially useful if you frequently find yourself switching
|
||||||
|
between multiple different personal or experimental WALA builds. By
|
||||||
|
avoiding `~/.m2`, each WALA-based project can be its own composite
|
||||||
|
build, with its own WALA subtree, and no project interferes with any
|
||||||
|
other.
|
||||||
|
|
||||||
|
# Travis CI
|
||||||
|
|
||||||
|
I use a [Travis CI build
|
||||||
|
matrix](https://docs.travis-ci.com/user/customizing-the-build/#Build-Matrix)
|
||||||
|
to perform automated testing in three configurations:
|
||||||
|
|
||||||
|
1. Gradle build on Ubuntu 14 (Trusty Tahr)
|
||||||
|
1. Maven build on Ubuntu 14 (Trusty Tahr)
|
||||||
|
1. Gradle build on macOS 10.12 (Sierra)
|
||||||
|
|
||||||
|
Until we are ready to completely replace Maven with Gradle, it is
|
||||||
|
important that both keep working. Therefore, I use Travis CI to build
|
||||||
|
and test WALA on Ubuntu using both Gradle and Maven. Every new pull
|
||||||
|
request must be validated in both of these configurations before I
|
||||||
|
will accept it onto the `gradle-and-buildship` branch.
|
||||||
|
|
||||||
|
<a id="travis-ci-macos"/>The official WALA repository has no macOS CI
|
||||||
|
testing. However, [macOS is the main development platform for at
|
||||||
|
least one WALA
|
||||||
|
maintainer](https://github.com/liblit/WALA/issues/3#issuecomment-356823287),
|
||||||
|
so it is great to have Travis CI helping us keep that platform
|
||||||
|
working. I will not accept pull requests that introduce regressions
|
||||||
|
into Gradle macOS builds. However, I am not using Travis CI to test
|
||||||
|
Maven macOS builds. Initial attempts using [the official WALA master
|
||||||
|
sources](https://github.com/wala/WALA) failed. As it is my goal to
|
||||||
|
replace Maven entirely, investigating Maven+macOS failures further is
|
||||||
|
not a priority.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
LocalWords: processTestResources pre classpath gradlew mvn
|
||||||
|
LocalWords: javadoc buildship issuecomment
|
||||||
|
-->
|
|
@ -29,14 +29,14 @@ projects = [
|
||||||
|
|
||||||
for proj in projects:
|
for proj in projects:
|
||||||
full_proj = "com.ibm.wala." + proj
|
full_proj = "com.ibm.wala." + proj
|
||||||
print full_proj
|
print(full_proj)
|
||||||
os.chdir(full_proj)
|
os.chdir(full_proj)
|
||||||
mvnCmd = "mvn -f mvncentral.xml clean " + action
|
mvnCmd = "mvn -f mvncentral.xml clean " + action
|
||||||
try:
|
try:
|
||||||
subprocess.check_output(mvnCmd, shell=True)
|
subprocess.check_output(mvnCmd, shell=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print "OUTPUT"
|
print("OUTPUT")
|
||||||
print e.output
|
print(e.output)
|
||||||
raise
|
raise
|
||||||
os.chdir("..")
|
os.chdir("..")
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,184 @@
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// plugin configuration must precede everything else
|
||||||
|
//
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'com.diffplug.gradle.p2.asmaven' version '3.10.0'
|
||||||
|
id 'com.github.hauner.jarTest' version '1.0.1' apply false
|
||||||
|
id 'de.undercouch.download'
|
||||||
|
id 'nebula.lint' version '8.3.1'
|
||||||
|
id 'nebula.source-jar' version '7.0.1' apply false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// required Eclipse components
|
||||||
|
//
|
||||||
|
|
||||||
|
p2AsMaven {
|
||||||
|
group 'eclipse-deps', {
|
||||||
|
repoEclipse '4.7.2'
|
||||||
|
slicingOption 'latestVersionOnly', 'true'
|
||||||
|
iu 'org.eclipse.core.commands'
|
||||||
|
iu 'org.eclipse.core.contenttype'
|
||||||
|
iu 'org.eclipse.core.jobs'
|
||||||
|
iu 'org.eclipse.core.resources'
|
||||||
|
iu 'org.eclipse.core.runtime'
|
||||||
|
iu 'org.eclipse.equinox.app'
|
||||||
|
iu 'org.eclipse.equinox.common'
|
||||||
|
iu 'org.eclipse.equinox.preferences'
|
||||||
|
iu 'org.eclipse.jdt.core'
|
||||||
|
iu 'org.eclipse.jface'
|
||||||
|
iu 'org.eclipse.osgi'
|
||||||
|
iu 'org.eclipse.pde.core'
|
||||||
|
iu 'org.eclipse.swt'
|
||||||
|
iu 'org.eclipse.ui.ide'
|
||||||
|
iu 'org.eclipse.ui.workbench'
|
||||||
|
}
|
||||||
|
group 'wst-deps', {
|
||||||
|
repo 'http://download.eclipse.org/releases/oxygen'
|
||||||
|
slicingOption 'latestVersionOnly', 'true'
|
||||||
|
iu 'org.eclipse.wst.jsdt.core'
|
||||||
|
iu 'org.eclipse.wst.jsdt.ui'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// common Java setup shared by multiple projects
|
||||||
|
//
|
||||||
|
|
||||||
|
group name
|
||||||
|
version '1.5.1-SNAPSHOT'
|
||||||
|
|
||||||
|
subprojects { subproject ->
|
||||||
|
// skip generic Java setup for the few projects that have no Java code whatsoever
|
||||||
|
switch (subproject.name) {
|
||||||
|
case 'com.ibm.wala-repository':
|
||||||
|
case ~/.*_feature/:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'java'
|
||||||
|
apply plugin: 'maven-publish'
|
||||||
|
apply plugin: 'nebula.source-jar'
|
||||||
|
|
||||||
|
version rootProject.version
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
url "$rootProject.buildDir/p2asmaven/maven"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jar.manifest.from('META-INF/MANIFEST.MF')
|
||||||
|
|
||||||
|
publishing.publications {
|
||||||
|
mavenJava(MavenPublication) {
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task afterEclipseBuildshipImport(dependsOn: processTestResources)
|
||||||
|
task prepareIntelliJIDEA
|
||||||
|
|
||||||
|
test {
|
||||||
|
include '**/*Test.class'
|
||||||
|
include '**/*TestCase.class'
|
||||||
|
include '**/*Tests.class'
|
||||||
|
include '**/Test*.class'
|
||||||
|
exclude '**/*AndroidLibs*.class'
|
||||||
|
|
||||||
|
maxParallelForks = Integer.MAX_VALUE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task afterEclipseBuildshipImport(type: Exec) {
|
||||||
|
commandLine './revert-launchers.sh'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// find platform-specific SWT implementations
|
||||||
|
//
|
||||||
|
|
||||||
|
def osgi_platform
|
||||||
|
|
||||||
|
switch (System.getProperty('os.name')) {
|
||||||
|
case ~/Mac OS X/:
|
||||||
|
osgi_platform = 'cocoa.macosx.x86_64'
|
||||||
|
break
|
||||||
|
case ~/Windows.*/:
|
||||||
|
osgi_platform = 'win32.win32.x86_64'
|
||||||
|
break
|
||||||
|
case ~/Linux/:
|
||||||
|
osgi_platform = 'gtk.linux.x86_64'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
System.setProperty('osgi.platform', osgi_platform)
|
||||||
|
|
||||||
|
subprojects {
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
// failOnVersionConflict()
|
||||||
|
dependencySubstitution {
|
||||||
|
substitute module('eclipse-deps:org.eclipse.swt.${osgi.platform}') with module("eclipse-deps:org.eclipse.swt.${System.getProperty('osgi.platform')}:3.+")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// optional lint checking of Gradle scripts
|
||||||
|
//
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
apply plugin: 'nebula.lint'
|
||||||
|
gradleLint.alwaysRun = false
|
||||||
|
gradleLint {
|
||||||
|
rules = ['all-dependency']
|
||||||
|
excludedRules = [
|
||||||
|
'duplicate-dependency-class',
|
||||||
|
'transitive-duplicate-dependency-class',
|
||||||
|
'unused-dependency',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// disable Javadoc linter until documentation is in better shape
|
||||||
|
//
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
tasks.withType(Javadoc) {
|
||||||
|
options.addStringOption('Xdoclint:none', '-quiet')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Eclipse IDE integration
|
||||||
|
//
|
||||||
|
|
||||||
|
// workaround for <https://github.com/gradle/gradle/issues/4802>
|
||||||
|
allprojects {
|
||||||
|
apply plugin: 'eclipse'
|
||||||
|
|
||||||
|
eclipse.classpath.file.whenMerged {
|
||||||
|
entries.each {
|
||||||
|
if (it in org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry && it.entryAttributes['gradle_used_by_scope'] == 'test')
|
||||||
|
it.entryAttributes['test'] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
/.gradle/
|
|
@ -0,0 +1,7 @@
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile 'de.undercouch:gradle-download-task:3.4.3'
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
import org.gradle.api.tasks.*
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// create a Javadoc-style "package-list" file
|
||||||
|
//
|
||||||
|
|
||||||
|
@CacheableTask
|
||||||
|
class CreatePackageList extends org.gradle.api.DefaultTask {
|
||||||
|
|
||||||
|
@PathSensitive(PathSensitivity.RELATIVE)
|
||||||
|
@Input Object sourceSet
|
||||||
|
|
||||||
|
@OutputFile File packageList = new File("$temporaryDir/package-list")
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
def create() {
|
||||||
|
sourceSet.sourceCollections.collect { collection ->
|
||||||
|
def sourceRoot = collection.tree.dir.toPath()
|
||||||
|
collection.collect { source ->
|
||||||
|
def javaSourceFilePath = source.toPath()
|
||||||
|
def parentPath = javaSourceFilePath.parent
|
||||||
|
def relativePath = sourceRoot.relativize(parentPath)
|
||||||
|
relativePath.toString().replace(File.separator, '.')
|
||||||
|
}
|
||||||
|
}.flatten().sort().unique().each {
|
||||||
|
packageList << "$it\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
import org.gradle.api.tasks.*
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// download and use checksum to verify that we got what we expected
|
||||||
|
//
|
||||||
|
|
||||||
|
@CacheableTask
|
||||||
|
class VerifiedDownload extends org.gradle.api.DefaultTask {
|
||||||
|
|
||||||
|
// URL of resource to download
|
||||||
|
def @Input src
|
||||||
|
|
||||||
|
// expected checksum of resource as hex digits
|
||||||
|
def @Input checksum
|
||||||
|
|
||||||
|
// algorithm to use for computing checksum
|
||||||
|
def @Input algorithm = 'MD5'
|
||||||
|
|
||||||
|
// whether to use ETag for selective downloading
|
||||||
|
def @Input useETag = true
|
||||||
|
|
||||||
|
// local file into which resource should be saved
|
||||||
|
def @OutputFile dest
|
||||||
|
|
||||||
|
File getDest() {
|
||||||
|
return project.file(dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
VerifiedDownload() {
|
||||||
|
outputs.upToDateWhen {
|
||||||
|
getDest().exists()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
downloadAndVerify() {
|
||||||
|
def destFile = getDest()
|
||||||
|
project.download {
|
||||||
|
src this.src
|
||||||
|
dest destFile
|
||||||
|
overwrite true
|
||||||
|
onlyIfModified true
|
||||||
|
useETag this.useETag
|
||||||
|
}
|
||||||
|
project.verifyChecksum {
|
||||||
|
src destFile
|
||||||
|
algorithm this.algorithm
|
||||||
|
checksum this.checksum
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,10 @@
|
||||||
import sys
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
def runAndPrint(cmd):
|
||||||
|
print cmd
|
||||||
|
subprocess.check_output(cmd, shell=True)
|
||||||
|
|
||||||
oldVersion = sys.argv[1]
|
oldVersion = sys.argv[1]
|
||||||
newVersion = sys.argv[2]
|
newVersion = sys.argv[2]
|
||||||
|
|
||||||
|
@ -13,13 +17,11 @@ print oldVersion + " --> " + newVersion
|
||||||
oldVersion = oldVersion.replace(".", "\.")
|
oldVersion = oldVersion.replace(".", "\.")
|
||||||
newVersion = newVersion.replace(".", "\.")
|
newVersion = newVersion.replace(".", "\.")
|
||||||
|
|
||||||
cleanCmd = "mvn clean -q"
|
runAndPrint("mvn clean -q")
|
||||||
print cleanCmd
|
|
||||||
subprocess.check_output(cleanCmd, shell=True)
|
|
||||||
|
|
||||||
xmlCmd = "find -E ./ -regex \".*(pom|mvncentral)\.xml\" | xargs -n 1 perl -pi -e \'s/" + oldVersion + "/" + newVersion + "/g\'"
|
runAndPrint("find -E ./ -regex \".*(pom|mvncentral)\.xml\" | xargs -n 1 perl -pi -e \'s/" + oldVersion + "/" + newVersion + "/g\'")
|
||||||
print xmlCmd
|
|
||||||
subprocess.check_output(xmlCmd, shell=True)
|
runAndPrint("perl -pi -e \'s/" + oldVersion + "/" + newVersion + "/g\' build.gradle")
|
||||||
|
|
||||||
oldIsSnapshot = oldVersion.endswith("SNAPSHOT")
|
oldIsSnapshot = oldVersion.endswith("SNAPSHOT")
|
||||||
newIsSnapShot = newVersion.endswith("SNAPSHOT")
|
newIsSnapShot = newVersion.endswith("SNAPSHOT")
|
||||||
|
@ -27,10 +29,7 @@ newIsSnapShot = newVersion.endswith("SNAPSHOT")
|
||||||
bundleOld = oldVersion if not oldIsSnapshot else oldVersion.replace("-SNAPSHOT","\.qualifier")
|
bundleOld = oldVersion if not oldIsSnapshot else oldVersion.replace("-SNAPSHOT","\.qualifier")
|
||||||
bundleNew = newVersion if not newIsSnapShot else newVersion.replace("-SNAPSHOT","\.qualifier")
|
bundleNew = newVersion if not newIsSnapShot else newVersion.replace("-SNAPSHOT","\.qualifier")
|
||||||
|
|
||||||
otherCmd = "find -E ./ -regex \".*(MANIFEST\.MF|feature\.xml)\" | xargs -n 1 perl -pi -e \'s/" + bundleOld + "/" + bundleNew + "/g\'"
|
runAndPrint("find -E ./ -regex \".*(MANIFEST\.MF|feature\.xml)\" | xargs -n 1 perl -pi -e \'s/" + bundleOld + "/" + bundleNew + "/g\'")
|
||||||
|
|
||||||
print otherCmd
|
|
||||||
subprocess.check_output(otherCmd, shell=True)
|
|
||||||
|
|
||||||
print "done"
|
print "done"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala-repository</artifactId>
|
<artifactId>com.ibm.wala-repository</artifactId>
|
||||||
<packaging>eclipse-repository</packaging>
|
<packaging>eclipse-repository</packaging>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.java.ecj</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -9,8 +9,13 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.autoboxing=error
|
org.eclipse.jdt.core.compiler.problem.autoboxing=error
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.java.ecj
|
Bundle-SymbolicName: com.ibm.wala.cast.java.ecj
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Bundle-Vendor: %Bundle-Vendor
|
Bundle-Vendor: %Bundle-Vendor
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||||
Require-Bundle: com.ibm.wala.cast.java,
|
Require-Bundle: com.ibm.wala.cast.java,
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
sourceSets.main.java.srcDirs = ['src']
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(
|
||||||
|
'eclipse-deps:org.eclipse.core.runtime:+',
|
||||||
|
'eclipse-deps:org.eclipse.equinox.common:+',
|
||||||
|
'eclipse-deps:org.eclipse.jdt.core:+',
|
||||||
|
'org.osgi:org.osgi.core:4.2.0',
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.cast.java'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
project(':com.ibm.wala.shrike'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
)
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.cast.java.ecj</artifactId>
|
<artifactId>com.ibm.wala.cast.java.ecj</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<name>WALA CAst Java ECJ</name>
|
<name>WALA CAst Java ECJ</name>
|
||||||
<description>WALA Common AST Java ECJ front-end</description>
|
<description>WALA Common AST Java ECJ front-end</description>
|
||||||
|
@ -45,27 +45,27 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.util</artifactId>
|
<artifactId>com.ibm.wala.util</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.cast</artifactId>
|
<artifactId>com.ibm.wala.cast</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.cast.java</artifactId>
|
<artifactId>com.ibm.wala.cast.java</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.core</artifactId>
|
<artifactId>com.ibm.wala.core</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.shrike</artifactId>
|
<artifactId>com.ibm.wala.shrike</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.core</groupId>
|
<groupId>org.eclipse.core</groupId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.java.ecj</artifactId>
|
<artifactId>com.ibm.wala.cast.java.ecj</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
|
|
@ -188,7 +188,7 @@ public class JDT2CAstUtils {
|
||||||
*/
|
*/
|
||||||
public static Object defaultValueForType(ITypeBinding type) {
|
public static Object defaultValueForType(ITypeBinding type) {
|
||||||
if (isLongOrLess(type))
|
if (isLongOrLess(type))
|
||||||
return new Integer(0);
|
return Integer.valueOf(0);
|
||||||
else if (type.getBinaryName().equals("D") || type.getBinaryName().equals("F"))
|
else if (type.getBinaryName().equals("D") || type.getBinaryName().equals("F"))
|
||||||
return new Double(0.0);
|
return new Double(0.0);
|
||||||
else
|
else
|
||||||
|
|
|
@ -274,6 +274,11 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
protected final class ClassEntity implements CAstEntity {
|
protected final class ClassEntity implements CAstEntity {
|
||||||
// TAGALONG (not static, will keep reference to ast, fIdentityMapper, etc)
|
// TAGALONG (not static, will keep reference to ast, fIdentityMapper, etc)
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getPosition(int arg) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private final String fName;
|
private final String fName;
|
||||||
|
|
||||||
private final Collection<CAstQualifier> fQuals;
|
private final Collection<CAstQualifier> fQuals;
|
||||||
|
@ -284,8 +289,11 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
|
|
||||||
private final T fSourcePosition;
|
private final T fSourcePosition;
|
||||||
|
|
||||||
|
private final T fNamePos;
|
||||||
|
|
||||||
public ClassEntity(ITypeBinding jdtType, String name, Collection<CAstQualifier> quals, Collection<CAstEntity> entities,
|
public ClassEntity(ITypeBinding jdtType, String name, Collection<CAstQualifier> quals, Collection<CAstEntity> entities,
|
||||||
T pos) {
|
T pos, T namePos) {
|
||||||
|
fNamePos = namePos;
|
||||||
fName = name;
|
fName = name;
|
||||||
fQuals = quals;
|
fQuals = quals;
|
||||||
fEntities = entities;
|
fEntities = entities;
|
||||||
|
@ -391,6 +399,11 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
return fTypeDict.new JdtJavaType(fJdtType);
|
return fTypeDict.new JdtJavaType(fJdtType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getNamePosition() {
|
||||||
|
return fNamePos;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isInterface(AbstractTypeDeclaration decl) {
|
private static boolean isInterface(AbstractTypeDeclaration decl) {
|
||||||
|
@ -400,7 +413,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
|
|
||||||
private CAstEntity visitTypeDecl(AbstractTypeDeclaration n, WalkContext context) {
|
private CAstEntity visitTypeDecl(AbstractTypeDeclaration n, WalkContext context) {
|
||||||
return createClassDeclaration(n, n.bodyDeclarations(), null, n.resolveBinding(), n.getName().getIdentifier(), n.getModifiers(),
|
return createClassDeclaration(n, n.bodyDeclarations(), null, n.resolveBinding(), n.getName().getIdentifier(), n.getModifiers(),
|
||||||
isInterface(n), n instanceof AnnotationTypeDeclaration, context);
|
isInterface(n), n instanceof AnnotationTypeDeclaration, context, makePosition(n.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -411,10 +424,11 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
* @param typeBinding
|
* @param typeBinding
|
||||||
* @param name Used in creating default constructor, and passed into new ClassEntity()
|
* @param name Used in creating default constructor, and passed into new ClassEntity()
|
||||||
* @param context
|
* @param context
|
||||||
|
* @param namePos
|
||||||
*/
|
*/
|
||||||
private CAstEntity createClassDeclaration(ASTNode n, List<BodyDeclaration> bodyDecls,
|
private CAstEntity createClassDeclaration(ASTNode n, List<BodyDeclaration> bodyDecls,
|
||||||
List<EnumConstantDeclaration> enumConstants, ITypeBinding typeBinding, String name, int modifiers,
|
List<EnumConstantDeclaration> enumConstants, ITypeBinding typeBinding, String name, int modifiers,
|
||||||
boolean isInterface, boolean isAnnotation, WalkContext context) {
|
boolean isInterface, boolean isAnnotation, WalkContext context, T namePos) {
|
||||||
final List<CAstEntity> memberEntities = new ArrayList<>();
|
final List<CAstEntity> memberEntities = new ArrayList<>();
|
||||||
|
|
||||||
// find and collect all initializers (type Initializer) and field initializers (type VariableDeclarationFragment).
|
// find and collect all initializers (type Initializer) and field initializers (type VariableDeclarationFragment).
|
||||||
|
@ -460,7 +474,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
IVariableBinding fieldBinding = fieldFrag.resolveBinding();
|
IVariableBinding fieldBinding = fieldFrag.resolveBinding();
|
||||||
memberEntities.add(new FieldEntity(fieldFrag.getName().getIdentifier(), fieldBinding.getType(), quals,
|
memberEntities.add(new FieldEntity(fieldFrag.getName().getIdentifier(), fieldBinding.getType(), quals,
|
||||||
makePosition(fieldFrag.getStartPosition(), fieldFrag.getStartPosition() + fieldFrag.getLength()),
|
makePosition(fieldFrag.getStartPosition(), fieldFrag.getStartPosition() + fieldFrag.getLength()),
|
||||||
handleAnnotations(fieldBinding)));
|
handleAnnotations(fieldBinding), makePosition(fieldFrag.getName())));
|
||||||
}
|
}
|
||||||
} else if (decl instanceof Initializer) {
|
} else if (decl instanceof Initializer) {
|
||||||
// Initializers are inserted into constructors when making constructors.
|
// Initializers are inserted into constructors when making constructors.
|
||||||
|
@ -521,12 +535,12 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
|
|
||||||
Collection<CAstQualifier> quals = JDT2CAstUtils.mapModifiersToQualifiers(modifiers, isInterface, isAnnotation);
|
Collection<CAstQualifier> quals = JDT2CAstUtils.mapModifiersToQualifiers(modifiers, isInterface, isAnnotation);
|
||||||
|
|
||||||
return new ClassEntity(typeBinding, name, quals, memberEntities, makePosition(n));
|
return new ClassEntity(typeBinding, name, quals, memberEntities, makePosition(n), namePos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CAstEntity visit(AnonymousClassDeclaration n, WalkContext context) {
|
private CAstEntity visit(AnonymousClassDeclaration n, WalkContext context) {
|
||||||
return createClassDeclaration(n, n.bodyDeclarations(), null, n.resolveBinding(),
|
return createClassDeclaration(n, n.bodyDeclarations(), null, n.resolveBinding(),
|
||||||
JDT2CAstUtils.anonTypeName(n.resolveBinding()), 0 /* no modifiers */, false, false, context);
|
JDT2CAstUtils.anonTypeName(n.resolveBinding()), 0 /* no modifiers */, false, false, context, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CAstNode visit(TypeDeclarationStatement n, WalkContext context) {
|
private CAstNode visit(TypeDeclarationStatement n, WalkContext context) {
|
||||||
|
@ -1031,6 +1045,12 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
return new CAstType.Method() {
|
return new CAstType.Method() {
|
||||||
private Collection<CAstType> fExceptionTypes = null;
|
private Collection<CAstType> fExceptionTypes = null;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isStatic() {
|
||||||
|
return getQualifiers().contains(CAstQualifier.STATIC);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CAstType getReturnType() {
|
public CAstType getReturnType() {
|
||||||
if (fReturnType != null)
|
if (fReturnType != null)
|
||||||
|
@ -1088,6 +1108,22 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getPosition(int arg) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
SingleVariableDeclaration p = (SingleVariableDeclaration) fDecl.parameters().get(arg);
|
||||||
|
return makePosition(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getNamePosition() {
|
||||||
|
if (fDecl == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return makePosition(fDecl);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ////////////////////////////////////
|
// ////////////////////////////////////
|
||||||
|
@ -1140,13 +1176,16 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
|
|
||||||
private final T position;
|
private final T position;
|
||||||
|
|
||||||
|
private final T namePos;
|
||||||
|
|
||||||
private final Set<CAstAnnotation> annotations;
|
private final Set<CAstAnnotation> annotations;
|
||||||
|
|
||||||
private FieldEntity(String name, ITypeBinding type, Collection<CAstQualifier> quals, T position, Set<CAstAnnotation> annotations) {
|
private FieldEntity(String name, ITypeBinding type, Collection<CAstQualifier> quals, T position, Set<CAstAnnotation> annotations, T namePos) {
|
||||||
super();
|
super();
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.quals = quals;
|
this.quals = quals;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.namePos = namePos;
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.annotations = annotations;
|
this.annotations = annotations;
|
||||||
}
|
}
|
||||||
|
@ -1239,6 +1278,19 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
public CAstType getType() {
|
public CAstType getType() {
|
||||||
return fTypeDict.getCAstTypeFor(type);
|
return fTypeDict.getCAstTypeFor(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getPosition(int arg) {
|
||||||
|
return namePos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getNamePosition() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
|
@ -2305,7 +2357,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
private CAstNode getSwitchCaseConstant(SwitchCase n, WalkContext context) {
|
private CAstNode getSwitchCaseConstant(SwitchCase n, WalkContext context) {
|
||||||
// TODO: enums
|
// TODO: enums
|
||||||
Expression expr = n.getExpression();
|
Expression expr = n.getExpression();
|
||||||
Object constant = (expr == null) ? new Integer(0) : expr.resolveConstantExpressionValue(); // default case label of
|
Object constant = (expr == null) ? Integer.valueOf(0) : expr.resolveConstantExpressionValue(); // default case label of
|
||||||
// "0" (what polyglot
|
// "0" (what polyglot
|
||||||
// does). we also set
|
// does). we also set
|
||||||
// SWITCH_DEFAULT
|
// SWITCH_DEFAULT
|
||||||
|
@ -2562,7 +2614,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
/*------ indexDecl --------- int tmpindex = 0 ------*/
|
/*------ indexDecl --------- int tmpindex = 0 ------*/
|
||||||
final String tmpIndexName = "for temp index";
|
final String tmpIndexName = "for temp index";
|
||||||
CAstNode indexDeclNode = makeNode(context, fFactory, n, CAstNode.DECL_STMT, fFactory.makeConstant(new InternalCAstSymbol(
|
CAstNode indexDeclNode = makeNode(context, fFactory, n, CAstNode.DECL_STMT, fFactory.makeConstant(new InternalCAstSymbol(
|
||||||
tmpIndexName, fTypeDict.getCAstTypeFor(ast.resolveWellKnownType("int")), true)), fFactory.makeConstant(new Integer(0)));
|
tmpIndexName, fTypeDict.getCAstTypeFor(ast.resolveWellKnownType("int")), true)), fFactory.makeConstant(Integer.valueOf(0)));
|
||||||
|
|
||||||
/*------ cond ------------- tmpindex < tmparray.length ------*/
|
/*------ cond ------------- tmpindex < tmparray.length ------*/
|
||||||
CAstNode tmpArrayLengthNode = makeNode(context, fFactory, n, CAstNode.ARRAY_LENGTH, makeNode(context, fFactory, n,
|
CAstNode tmpArrayLengthNode = makeNode(context, fFactory, n, CAstNode.ARRAY_LENGTH, makeNode(context, fFactory, n,
|
||||||
|
@ -3016,6 +3068,16 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
Assertions.UNREACHABLE("CompilationUnitEntity.getType()");
|
Assertions.UNREACHABLE("CompilationUnitEntity.getType()");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getPosition(int arg) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Position getNamePosition() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /////////////////////////////
|
// /////////////////////////////
|
||||||
|
@ -3311,7 +3373,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
*/
|
*/
|
||||||
private CAstEntity visit(EnumConstantDeclaration decl, WalkContext context) {
|
private CAstEntity visit(EnumConstantDeclaration decl, WalkContext context) {
|
||||||
return new FieldEntity(decl.getName().getIdentifier(), decl.resolveVariable().getType(), enumQuals, makePosition(decl
|
return new FieldEntity(decl.getName().getIdentifier(), decl.resolveVariable().getType(), enumQuals, makePosition(decl
|
||||||
.getStartPosition(), decl.getStartPosition() + decl.getLength()), null);
|
.getStartPosition(), decl.getStartPosition() + decl.getLength()), null, makePosition(decl.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3460,10 +3522,9 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
|
||||||
}
|
}
|
||||||
|
|
||||||
private CAstEntity visit(EnumDeclaration n, WalkContext context) {
|
private CAstEntity visit(EnumDeclaration n, WalkContext context) {
|
||||||
|
|
||||||
// JDT contains correct type info / class / subclass info for the enum
|
// JDT contains correct type info / class / subclass info for the enum
|
||||||
return createClassDeclaration(n, n.bodyDeclarations(), n.enumConstants(), n.resolveBinding(), n.getName().getIdentifier(), n
|
return createClassDeclaration(n, n.bodyDeclarations(), n.enumConstants(), n.resolveBinding(), n.getName().getIdentifier(), n
|
||||||
.resolveBinding().getModifiers(), false, false, context);
|
.resolveBinding().getModifiers(), false, false, context, makePosition(n.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<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.8"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,103 +0,0 @@
|
||||||
/p
|
|
||||||
/A.class
|
|
||||||
/AnonymousClass.class
|
|
||||||
/AnonymousClass.java
|
|
||||||
/AnonymousClass$1.class
|
|
||||||
/AnonymousClass$1FooImpl.class
|
|
||||||
/AnonymousClass$2.class
|
|
||||||
/AnonymousClass$Foo.class
|
|
||||||
/Array1.class
|
|
||||||
/Array1.java
|
|
||||||
/ArrayLiteral1.class
|
|
||||||
/ArrayLiteral1.java
|
|
||||||
/ArrayLiteral2.class
|
|
||||||
/ArrayLiteral2.java
|
|
||||||
/B.class
|
|
||||||
/BadLanguageExceptionEx1.class
|
|
||||||
/BadLanguageExceptionF1.class
|
|
||||||
/Bar.class
|
|
||||||
/Base.class
|
|
||||||
/Breaks.class
|
|
||||||
/Breaks.java
|
|
||||||
/Breaks$1.class
|
|
||||||
/Breaks$Ref.class
|
|
||||||
/CastFromNull.class
|
|
||||||
/CastFromNull.java
|
|
||||||
/Casts.class
|
|
||||||
/Casts.java
|
|
||||||
/Derived.class
|
|
||||||
/Exception1.class
|
|
||||||
/Exception1.java
|
|
||||||
/Exception2.class
|
|
||||||
/Exception2.java
|
|
||||||
/Finally1.class
|
|
||||||
/Finally1.java
|
|
||||||
/FooEx1.class
|
|
||||||
/FooEx2.class
|
|
||||||
/FooF1.class
|
|
||||||
/FooIT1.class
|
|
||||||
/FooQ.class
|
|
||||||
/IFoo.class
|
|
||||||
/Inheritance1.class
|
|
||||||
/Inheritance1.java
|
|
||||||
/InheritedField.class
|
|
||||||
/InheritedField.java
|
|
||||||
/InnerClass.class
|
|
||||||
/InnerClass.java
|
|
||||||
/InnerClass$WhatsIt.class
|
|
||||||
/InnerClass$WhatsIt$NotAgain.class
|
|
||||||
/InnerClass$WhatsThat.class
|
|
||||||
/InnerClassA.class
|
|
||||||
/InnerClassA.java
|
|
||||||
/InnerClassA$AA.class
|
|
||||||
/InnerClassA$AB.class
|
|
||||||
/InnerClassA$AB$ABA.class
|
|
||||||
/InnerClassA$AB$ABA$ABAA.class
|
|
||||||
/InnerClassA$AB$ABA$ABAB.class
|
|
||||||
/InnerClassA$AB$ABSubA.class
|
|
||||||
/InnerClassA$AB$ABSubA$ABSubAA.class
|
|
||||||
/InnerClassSuper.class
|
|
||||||
/InnerClassSuper.java
|
|
||||||
/InnerClassSuper$SuperOuter.class
|
|
||||||
/InterfaceTest1.class
|
|
||||||
/InterfaceTest1.java
|
|
||||||
/IntWrapper.class
|
|
||||||
/LocalClass.class
|
|
||||||
/LocalClass.java
|
|
||||||
/LocalClass$1Foo.class
|
|
||||||
/LocalClass$2Foo.class
|
|
||||||
/MiniaturList.class
|
|
||||||
/MiniaturList.java
|
|
||||||
/MiniaturSliceBug.class
|
|
||||||
/MiniaturSliceBug.java
|
|
||||||
/Monitor.class
|
|
||||||
/Monitor.java
|
|
||||||
/NullArrayInit.class
|
|
||||||
/NullArrayInit.java
|
|
||||||
/PrimitiveWrapper.class
|
|
||||||
/QualifiedStatic.class
|
|
||||||
/QualifiedStatic.java
|
|
||||||
/R.class
|
|
||||||
/Scoping1.class
|
|
||||||
/Scoping1.java
|
|
||||||
/Scoping2.class
|
|
||||||
/Scoping2.java
|
|
||||||
/Scoping2$1.class
|
|
||||||
/Simple1.class
|
|
||||||
/Simple1.java
|
|
||||||
/StaticInitializers.class
|
|
||||||
/StaticInitializers.java
|
|
||||||
/StaticInitializers$X.class
|
|
||||||
/StaticNesting.class
|
|
||||||
/StaticNesting.java
|
|
||||||
/StaticNesting$WhatsIt.class
|
|
||||||
/Sub.class
|
|
||||||
/Sub$SubInner.class
|
|
||||||
/Switch1.class
|
|
||||||
/Switch1.java
|
|
||||||
/Thread1.class
|
|
||||||
/Thread1.java
|
|
||||||
/TwoClasses.class
|
|
||||||
/TwoClasses.java
|
|
||||||
/WhileTest1.class
|
|
||||||
/WhileTest1.java
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.java.test.data</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
|
|
||||||
<triggers>full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
<dictionary>
|
|
||||||
<key>LaunchConfigHandle</key>
|
|
||||||
<value><project>/.externalToolBuilders/java.test.data JLex download.launch</value>
|
|
||||||
</dictionary>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -18,6 +18,7 @@ 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
|
||||||
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
|
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.APILeak=error
|
||||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
|
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
|
||||||
|
@ -68,7 +69,7 @@ org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
|
||||||
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
|
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
|
||||||
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
|
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
|
||||||
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
|
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
|
||||||
org.eclipse.jdt.core.compiler.problem.nullReference=warning
|
org.eclipse.jdt.core.compiler.problem.nullReference=ignore
|
||||||
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
|
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
|
||||||
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
|
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
|
||||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
|
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
|
||||||
|
@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||||
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
|
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
|
||||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=error
|
||||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
|
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
|
||||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
|
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
|
||||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
|
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
|
||||||
|
|
|
@ -2,6 +2,6 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.java.test.data
|
Bundle-SymbolicName: com.ibm.wala.cast.java.test.data
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Bundle-Vendor: %Bundle-Vendor
|
Bundle-Vendor: %Bundle-Vendor
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
plugins {
|
||||||
|
id 'eclipse'
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets.test.java.srcDirs = ['src']
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// download JLex
|
||||||
|
//
|
||||||
|
|
||||||
|
task downloadJLex(type: VerifiedDownload) {
|
||||||
|
src 'http://www.cs.princeton.edu/~appel/modern/java/JLex/current/Main.java'
|
||||||
|
checksum 'fe0cff5db3e2f0f5d67a153cf6c783af'
|
||||||
|
dest 'src/JLex/Main.java'
|
||||||
|
}
|
||||||
|
|
||||||
|
task cleanDownloadJLex(type: Delete) {
|
||||||
|
delete downloadJLex.dest.parent
|
||||||
|
}
|
||||||
|
|
||||||
|
compileTestJava.dependsOn downloadJLex
|
||||||
|
clean.dependsOn cleanDownloadJLex
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// create Eclipse metadata for use by Maven when running
|
||||||
|
// com.ibm.wala.cast.java.test.JDTJavaIRTests and
|
||||||
|
// com.ibm.wala.cast.java.test.JDTJava15IRTests tests
|
||||||
|
//
|
||||||
|
|
||||||
|
task prepareMavenBuild(dependsOn: [eclipseClasspath, eclipseProject]) {
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.java.test.data</artifactId>
|
<artifactId>com.ibm.wala.cast.java.test.data</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
|
|
@ -15,7 +15,7 @@ public class AnonymousClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
final Integer base = new Integer(6);
|
final Integer base = Integer.valueOf(6);
|
||||||
|
|
||||||
Foo f= new Foo() {
|
Foo f= new Foo() {
|
||||||
int value = 3;
|
int value = 3;
|
||||||
|
@ -34,7 +34,7 @@ public class AnonymousClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void method() {
|
public void method() {
|
||||||
final Integer base = new Integer(7);
|
final Integer base = Integer.valueOf(7);
|
||||||
|
|
||||||
abstract class FooImpl implements Foo {
|
abstract class FooImpl implements Foo {
|
||||||
int y;
|
int y;
|
||||||
|
|
|
@ -12,6 +12,6 @@ public class ArrayLiteral1 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
ArrayLiteral1 al1= new ArrayLiteral1();
|
ArrayLiteral1 al1= new ArrayLiteral1();
|
||||||
int[] a= new int[] { 0, 1, 2, 3, 5 };
|
int[] a= new int[] { 0, 1, 2, 3, 5 };
|
||||||
Object[] b= new Object[] { null, "hi", new Integer(55), new int[] { 3, 1, 4 } };
|
Object[] b= new Object[] { null, "hi", Integer.valueOf(55), new int[] { 3, 1, 4 } };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
public class LocalClass {
|
public class LocalClass {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
final Integer base = new Integer(6);
|
final Integer base = Integer.valueOf(6);
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
int value;
|
int value;
|
||||||
|
@ -27,7 +27,7 @@ public class LocalClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void method() {
|
public void method() {
|
||||||
final Integer base = new Integer(6);
|
final Integer base = Integer.valueOf(6);
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
int value;
|
int value;
|
||||||
|
|
|
@ -42,7 +42,6 @@ public class ArraysAndSuch {
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
ArraysAndSuch.main();
|
ArraysAndSuch.main();
|
||||||
}
|
}
|
||||||
@SuppressWarnings("null")
|
|
||||||
public static void main() {
|
public static void main() {
|
||||||
Object o1 = null;
|
Object o1 = null;
|
||||||
Object[] os1 = new Object[] { null, o1, null };
|
Object[] os1 = new Object[] { null, o1, null };
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class BasicsGenerics {
|
||||||
System.out.println(frenchy);
|
System.out.println(frenchy);
|
||||||
System.out.println(sicilian);
|
System.out.println(sicilian);
|
||||||
strs.add("hello");
|
strs.add("hello");
|
||||||
ints.add(new Integer(3));
|
ints.add(Integer.valueOf(3));
|
||||||
|
|
||||||
String qqq;
|
String qqq;
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,8 @@ public class ExplicitBoxingTest {
|
||||||
int a = 6;
|
int a = 6;
|
||||||
a = a + a;
|
a = a + a;
|
||||||
System.out.println(a);
|
System.out.println(a);
|
||||||
Integer useless1 = new Integer(5+6);
|
Integer useless1 = Integer.valueOf(5+6);
|
||||||
Integer aa = new Integer(a+a);
|
Integer aa = Integer.valueOf(a+a);
|
||||||
int aaa = aa.intValue();
|
int aaa = aa.intValue();
|
||||||
System.out.println(aaa);
|
System.out.println(aaa);
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class GenericArrays {
|
||||||
Object o = lsa;
|
Object o = lsa;
|
||||||
Object[] oa = (Object[]) o;
|
Object[] oa = (Object[]) o;
|
||||||
List<Integer> li = new ArrayList<>();
|
List<Integer> li = new ArrayList<>();
|
||||||
li.add(new Integer(3));
|
li.add(Integer.valueOf(3));
|
||||||
oa[1] = li; // correct
|
oa[1] = li; // correct
|
||||||
String s = (String) lsa[1].get(0); // run time error, but cast is explicit
|
String s = (String) lsa[1].get(0); // run time error, but cast is explicit
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class MoreOverriddenGenerics {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long get() {
|
public Long get() {
|
||||||
return new Long(6);
|
return Long.valueOf(6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class OverridesOnePointFour {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long get() {
|
public Long get() {
|
||||||
return new Long(6);
|
return Long.valueOf(6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,8 @@ public class Wildcards {
|
||||||
printCollection2(e);
|
printCollection2(e);
|
||||||
|
|
||||||
ArrayList<Integer> e3 = new ArrayList<>();
|
ArrayList<Integer> e3 = new ArrayList<>();
|
||||||
e3.add(new Integer(123));
|
e3.add(Integer.valueOf(123));
|
||||||
e3.add(new Integer(42));
|
e3.add(Integer.valueOf(42));
|
||||||
printCollection(e3);
|
printCollection(e3);
|
||||||
printCollection1(e3);
|
printCollection1(e3);
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<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.8"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,2 +0,0 @@
|
||||||
bin
|
|
||||||
domo-trace.txt*
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.java.test</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.java.test
|
Bundle-SymbolicName: com.ibm.wala.cast.java.test
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Bundle-Activator: com.ibm.wala.cast.java.test.TestPlugin
|
Bundle-Activator: com.ibm.wala.cast.java.test.TestPlugin
|
||||||
Bundle-Vendor: %Bundle-Vendor
|
Bundle-Vendor: %Bundle-Vendor
|
||||||
Require-Bundle: com.ibm.wala.core.tests,
|
Require-Bundle: com.ibm.wala.core.tests,
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
plugins {
|
||||||
|
id 'com.github.hauner.jarTest'
|
||||||
|
id 'eclipse'
|
||||||
|
}
|
||||||
|
|
||||||
|
eclipse.project.natures 'org.eclipse.pde.PluginNature'
|
||||||
|
|
||||||
|
sourceSets.test.java.srcDirs = ['src']
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile(
|
||||||
|
'junit:junit:4.12',
|
||||||
|
'org.osgi:org.osgi.core:4.2.0',
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.cast.java'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
project(':com.ibm.wala.shrike'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.core.tests'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
maxHeapSize = '800M'
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
source.. = src/
|
source.. = src/
|
||||||
output.. = bin/
|
output.. = bin/test
|
||||||
bin.includes = META-INF/,\
|
bin.includes = META-INF/,\
|
||||||
.,\
|
.,\
|
||||||
OSGI-INF/l10n/bundle.properties,\
|
|
||||||
OSGI-INF/
|
OSGI-INF/
|
||||||
javacProjectSettings = true
|
javacProjectSettings = true
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.java.test</artifactId>
|
<artifactId>com.ibm.wala.cast.java.test</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.11</version>
|
<version>4.12</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -40,6 +40,7 @@ import com.ibm.wala.classLoader.SourceFileModule;
|
||||||
import com.ibm.wala.client.AbstractAnalysisEngine;
|
import com.ibm.wala.client.AbstractAnalysisEngine;
|
||||||
import com.ibm.wala.ipa.callgraph.CGNode;
|
import com.ibm.wala.ipa.callgraph.CGNode;
|
||||||
import com.ibm.wala.ipa.callgraph.CallGraph;
|
import com.ibm.wala.ipa.callgraph.CallGraph;
|
||||||
|
import com.ibm.wala.ipa.callgraph.CallGraphBuilder;
|
||||||
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
|
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
|
||||||
import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis;
|
import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis;
|
||||||
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||||
|
@ -345,11 +346,11 @@ public abstract class IRTests {
|
||||||
return new String[] { "L" + pkgName + "/" + getTestName().substring(4) };
|
return new String[] { "L" + pkgName + "/" + getTestName().substring(4) };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract <I extends InstanceKey> AbstractAnalysisEngine<I> getAnalysisEngine(String[] mainClassDescriptors, Collection<String> sources, List<String> libs);
|
protected abstract <I extends InstanceKey> AbstractAnalysisEngine<I, CallGraphBuilder<I>, ?> getAnalysisEngine(String[] mainClassDescriptors, Collection<String> sources, List<String> libs);
|
||||||
|
|
||||||
public <I extends InstanceKey> Pair<CallGraph, PointerAnalysis<I>> runTest(Collection<String> sources, List<String> libs,
|
public <I extends InstanceKey> Pair<CallGraph, PointerAnalysis<? extends InstanceKey>> runTest(Collection<String> sources, List<String> libs,
|
||||||
String[] mainClassDescriptors, List<? extends IRAssertion> ca, boolean assertReachable) throws IllegalArgumentException, CancelException, IOException {
|
String[] mainClassDescriptors, List<? extends IRAssertion> ca, boolean assertReachable) throws IllegalArgumentException, CancelException, IOException {
|
||||||
AbstractAnalysisEngine<I> engine = getAnalysisEngine(mainClassDescriptors, sources, libs);
|
AbstractAnalysisEngine<I, CallGraphBuilder<I>, ?> engine = getAnalysisEngine(mainClassDescriptors, sources, libs);
|
||||||
|
|
||||||
CallGraph callGraph;
|
CallGraph callGraph;
|
||||||
callGraph = engine.buildDefaultCallGraph();
|
callGraph = engine.buildDefaultCallGraph();
|
||||||
|
|
|
@ -318,13 +318,13 @@ public abstract class JavaIRTests extends IRTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test public void testInnerClassA() throws IllegalArgumentException, CancelException, IOException {
|
@Test public void testInnerClassA() throws IllegalArgumentException, CancelException, IOException {
|
||||||
Pair<CallGraph, PointerAnalysis<InstanceKey>> x =
|
Pair<CallGraph, PointerAnalysis<? extends InstanceKey>> x =
|
||||||
runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), new ArrayList<IRAssertion>(), true);
|
runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), new ArrayList<IRAssertion>(), true);
|
||||||
|
|
||||||
// can't do an IRAssertion() -- we need the pointer analysis
|
// can't do an IRAssertion() -- we need the pointer analysis
|
||||||
|
|
||||||
CallGraph cg = x.fst;
|
CallGraph cg = x.fst;
|
||||||
PointerAnalysis<InstanceKey> pa = x.snd;
|
PointerAnalysis<? extends InstanceKey> pa = x.snd;
|
||||||
|
|
||||||
Iterator<CGNode> iter = cg.iterator();
|
Iterator<CGNode> iter = cg.iterator();
|
||||||
while ( iter.hasNext() ) {
|
while ( iter.hasNext() ) {
|
||||||
|
@ -377,13 +377,13 @@ public abstract class JavaIRTests extends IRTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test public void testInnerClassSuper() throws IllegalArgumentException, CancelException, IOException {
|
@Test public void testInnerClassSuper() throws IllegalArgumentException, CancelException, IOException {
|
||||||
Pair<CallGraph, PointerAnalysis<InstanceKey>> x =
|
Pair<CallGraph, PointerAnalysis<? extends InstanceKey>> x =
|
||||||
runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), new ArrayList<IRAssertion>(), true);
|
runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), new ArrayList<IRAssertion>(), true);
|
||||||
|
|
||||||
// can't do an IRAssertion() -- we need the pointer analysis
|
// can't do an IRAssertion() -- we need the pointer analysis
|
||||||
|
|
||||||
CallGraph cg = x.fst;
|
CallGraph cg = x.fst;
|
||||||
PointerAnalysis<InstanceKey> pa = x.snd;
|
PointerAnalysis<? extends InstanceKey> pa = x.snd;
|
||||||
|
|
||||||
Iterator<CGNode> iter = cg.iterator();
|
Iterator<CGNode> iter = cg.iterator();
|
||||||
while ( iter.hasNext() ) {
|
while ( iter.hasNext() ) {
|
||||||
|
@ -534,15 +534,15 @@ public abstract class JavaIRTests extends IRTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test public void testMiniaturSliceBug() throws IllegalArgumentException, CancelException, IOException {
|
@Test public void testMiniaturSliceBug() throws IllegalArgumentException, CancelException, IOException {
|
||||||
Pair<CallGraph, PointerAnalysis<InstanceKey>> x = runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), emptyList, true);
|
Pair<CallGraph, PointerAnalysis<? extends InstanceKey>> x = runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), emptyList, true);
|
||||||
|
|
||||||
PointerAnalysis<InstanceKey> pa = x.snd;
|
PointerAnalysis<? extends InstanceKey> pa = x.snd;
|
||||||
CallGraph cg = x.fst;
|
CallGraph cg = x.fst;
|
||||||
|
|
||||||
// test partial slice
|
// test partial slice
|
||||||
MethodReference sliceRootRef = getSliceRootReference("MiniaturSliceBug", "validNonDispatchedCall", "(LIntWrapper;)V");
|
MethodReference sliceRootRef = getSliceRootReference("MiniaturSliceBug", "validNonDispatchedCall", "(LIntWrapper;)V");
|
||||||
Set<CGNode> roots = cg.getNodes(sliceRootRef);
|
Set<CGNode> roots = cg.getNodes(sliceRootRef);
|
||||||
Pair<Collection<Statement>,SDG<InstanceKey>> y = AstJavaSlicer.computeAssertionSlice(cg, pa, roots, false);
|
Pair<Collection<Statement>,SDG<? extends InstanceKey>> y = AstJavaSlicer.computeAssertionSlice(cg, pa, roots, false);
|
||||||
Collection<Statement> slice = y.fst;
|
Collection<Statement> slice = y.fst;
|
||||||
SlicerTest.dumpSlice(slice);
|
SlicerTest.dumpSlice(slice);
|
||||||
Assert.assertEquals(0, SlicerTest.countAllocations(slice));
|
Assert.assertEquals(0, SlicerTest.countAllocations(slice));
|
||||||
|
|
|
@ -40,7 +40,7 @@ public abstract class SyncDuplicatorTests extends IRTests {
|
||||||
Descriptor.findOrCreateUTF8(Language.JAVA, "(Ljava/lang/Object;)Z")), IInvokeInstruction.Dispatch.STATIC);
|
Descriptor.findOrCreateUTF8(Language.JAVA, "(Ljava/lang/Object;)Z")), IInvokeInstruction.Dispatch.STATIC);
|
||||||
|
|
||||||
@Test public void testMonitor2() throws IllegalArgumentException, CancelException, IOException {
|
@Test public void testMonitor2() throws IllegalArgumentException, CancelException, IOException {
|
||||||
Pair<CallGraph, PointerAnalysis<InstanceKey>> result = runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), emptyList, true);
|
Pair<CallGraph, PointerAnalysis<? extends InstanceKey>> result = runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), emptyList, true);
|
||||||
System.err.println(result.fst);
|
System.err.println(result.fst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<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.8"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,2 +0,0 @@
|
||||||
bin
|
|
||||||
domo-trace.txt*
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.java</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
@ -17,6 +18,7 @@ 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
|
||||||
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
|
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.APILeak=error
|
||||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.autoboxing=error
|
org.eclipse.jdt.core.compiler.problem.autoboxing=error
|
||||||
|
@ -77,7 +79,7 @@ org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariable
|
||||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
|
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
|
||||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
||||||
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
|
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
|
||||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
org.eclipse.jdt.core.compiler.problem.rawTypeReference=error
|
||||||
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
|
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
|
||||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
|
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
|
||||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
|
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
|
||||||
|
@ -90,6 +92,7 @@ org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||||
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
|
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
|
||||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=error
|
||||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
|
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
|
||||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
|
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=error
|
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=error
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.java
|
Bundle-SymbolicName: com.ibm.wala.cast.java
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Bundle-Vendor: %Bundle-Vendor
|
Bundle-Vendor: %Bundle-Vendor
|
||||||
Require-Bundle: com.ibm.wala.cast,
|
Require-Bundle: com.ibm.wala.cast,
|
||||||
com.ibm.wala.core,
|
com.ibm.wala.core,
|
||||||
|
@ -21,3 +21,4 @@ Export-Package: com.ibm.wala.cast.java.analysis.typeInference,
|
||||||
com.ibm.wala.cast.java.types
|
com.ibm.wala.cast.java.types
|
||||||
Bundle-ClassPath: .
|
Bundle-ClassPath: .
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||||
|
Automatic-Module-Name: com.ibm.wala.cast.java
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
plugins {
|
||||||
|
id 'eclipse'
|
||||||
|
}
|
||||||
|
|
||||||
|
eclipse.project.natures 'org.eclipse.pde.PluginNature'
|
||||||
|
|
||||||
|
sourceSets.main.java.srcDirs = ['src']
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
project(':com.ibm.wala.shrike'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
)
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
source.. = src/
|
source.. = src/
|
||||||
output.. = bin/
|
output.. = bin/main
|
||||||
bin.includes = META-INF/,\
|
bin.includes = META-INF/,\
|
||||||
.,\
|
.,\
|
||||||
OSGI-INF/l10n/bundle.properties,\
|
OSGI-INF/l10n/bundle.properties,\
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.cast.java</artifactId>
|
<artifactId>com.ibm.wala.cast.java</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<name>WALA CAst</name>
|
<name>WALA CAst</name>
|
||||||
<description>WALA Common AST core Java front-end functionality</description>
|
<description>WALA Common AST core Java front-end functionality</description>
|
||||||
|
@ -45,22 +45,22 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.util</artifactId>
|
<artifactId>com.ibm.wala.util</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.cast</artifactId>
|
<artifactId>com.ibm.wala.cast</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.core</artifactId>
|
<artifactId>com.ibm.wala.core</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>com.ibm.wala.shrike</artifactId>
|
<artifactId>com.ibm.wala.shrike</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.java</artifactId>
|
<artifactId>com.ibm.wala.cast.java</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
|
|
@ -43,7 +43,7 @@ import com.ibm.wala.util.io.FileProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public abstract class JavaSourceAnalysisEngine<I extends InstanceKey> extends AbstractAnalysisEngine<I> {
|
public abstract class JavaSourceAnalysisEngine<I extends InstanceKey> extends AbstractAnalysisEngine<I, CallGraphBuilder<I>, Void> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modules which are user-space code
|
* Modules which are user-space code
|
||||||
|
@ -167,7 +167,7 @@ public abstract class JavaSourceAnalysisEngine<I extends InstanceKey> extends Ab
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected CallGraphBuilder<I> getCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache) {
|
protected CallGraphBuilder<? super I> getCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache) {
|
||||||
return new ZeroCFABuilderFactory().make(options, cache, cha, scope);
|
return new ZeroCFABuilderFactory().make(options, cache, cha, scope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import com.ibm.wala.ipa.callgraph.AnalysisScope;
|
||||||
import com.ibm.wala.ipa.callgraph.CallGraphBuilder;
|
import com.ibm.wala.ipa.callgraph.CallGraphBuilder;
|
||||||
import com.ibm.wala.ipa.callgraph.IAnalysisCacheView;
|
import com.ibm.wala.ipa.callgraph.IAnalysisCacheView;
|
||||||
import com.ibm.wala.ipa.callgraph.impl.Util;
|
import com.ibm.wala.ipa.callgraph.impl.Util;
|
||||||
|
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
|
||||||
import com.ibm.wala.ipa.callgraph.propagation.cfa.ZeroXInstanceKeys;
|
import com.ibm.wala.ipa.callgraph.propagation.cfa.ZeroXInstanceKeys;
|
||||||
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||||
|
|
||||||
|
@ -26,7 +27,7 @@ import com.ibm.wala.ipa.cha.IClassHierarchy;
|
||||||
*/
|
*/
|
||||||
public class ZeroCFABuilderFactory {
|
public class ZeroCFABuilderFactory {
|
||||||
|
|
||||||
public CallGraphBuilder make(AnalysisOptions options, IAnalysisCacheView cache, IClassHierarchy cha, AnalysisScope scope) {
|
public CallGraphBuilder<InstanceKey> make(AnalysisOptions options, IAnalysisCacheView cache, IClassHierarchy cha, AnalysisScope scope) {
|
||||||
Util.addDefaultSelectors(options, cha);
|
Util.addDefaultSelectors(options, cha);
|
||||||
Util.addDefaultBypassLogic(options, scope, Util.class.getClassLoader(), cha);
|
Util.addDefaultBypassLogic(options, scope, Util.class.getClassLoader(), cha);
|
||||||
return new AstJavaZeroXCFABuilder(cha, options, cache, null, null, ZeroXInstanceKeys.NONE);
|
return new AstJavaZeroXCFABuilder(cha, options, cache, null, null, ZeroXInstanceKeys.NONE);
|
||||||
|
|
|
@ -256,7 +256,7 @@ public class AstJavaSSAPropagationCallGraphBuilder extends AstSSAPropagationCall
|
||||||
|
|
||||||
System.err.println(("class is " + klass + ", enclosing is " + enclosingClass + ", method is " + node.getMethod()));
|
System.err.println(("class is " + klass + ", enclosing is " + enclosingClass + ", method is " + node.getMethod()));
|
||||||
|
|
||||||
if (node.getMethod().isSynthetic()) {
|
if (node.getMethod().isWalaSynthetic()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,10 +89,10 @@ public class AstJavaSlicer extends Slicer {
|
||||||
return gatherStatements(CG, partialRoots, o -> (o instanceof SSAGetInstruction) || (o instanceof SSAArrayLoadInstruction));
|
return gatherStatements(CG, partialRoots, o -> (o instanceof SSAGetInstruction) || (o instanceof SSAArrayLoadInstruction));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Pair<Collection<Statement>, SDG<InstanceKey>> computeAssertionSlice(CallGraph CG, PointerAnalysis<InstanceKey> pa,
|
public static Pair<Collection<Statement>, SDG<? extends InstanceKey>> computeAssertionSlice(CallGraph CG, PointerAnalysis<? extends InstanceKey> pa,
|
||||||
Collection<CGNode> partialRoots, boolean multiThreadedCode) throws IllegalArgumentException, CancelException {
|
Collection<CGNode> partialRoots, boolean multiThreadedCode) throws IllegalArgumentException, CancelException {
|
||||||
CallGraph pcg = PartialCallGraph.make(CG, new LinkedHashSet<>(partialRoots));
|
CallGraph pcg = PartialCallGraph.make(CG, new LinkedHashSet<>(partialRoots));
|
||||||
SDG<InstanceKey> sdg = new SDG<>(pcg, pa, new AstJavaModRef<>(), DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
|
SDG<? extends InstanceKey> sdg = new SDG<>(pcg, pa, new AstJavaModRef<>(), DataDependenceOptions.FULL, ControlDependenceOptions.FULL);
|
||||||
//System.err.println(("SDG:\n" + sdg));
|
//System.err.println(("SDG:\n" + sdg));
|
||||||
Set<Statement> stmts = gatherAssertions(CG, partialRoots);
|
Set<Statement> stmts = gatherAssertions(CG, partialRoots);
|
||||||
if (multiThreadedCode) {
|
if (multiThreadedCode) {
|
||||||
|
|
|
@ -30,6 +30,9 @@ 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.AstPropertyRead;
|
||||||
|
import com.ibm.wala.cast.ir.ssa.AstPropertyWrite;
|
||||||
|
import com.ibm.wala.cast.ir.ssa.AstYieldInstruction;
|
||||||
import com.ibm.wala.cast.ir.translator.AstTranslator;
|
import com.ibm.wala.cast.ir.translator.AstTranslator;
|
||||||
import com.ibm.wala.cast.ir.translator.AstTranslator.AstLexicalInformation;
|
import com.ibm.wala.cast.ir.translator.AstTranslator.AstLexicalInformation;
|
||||||
import com.ibm.wala.cast.java.ssa.AstJavaInstructionFactory;
|
import com.ibm.wala.cast.java.ssa.AstJavaInstructionFactory;
|
||||||
|
@ -165,17 +168,17 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMethod(CAstEntity methodEntity, IClass owner, AbstractCFG<?, ?> cfg, SymbolTable symtab, boolean hasCatchBlock,
|
protected void addMethod(CAstEntity methodEntity, IClass owner, AbstractCFG<?, ?> cfg, SymbolTable symtab, boolean hasCatchBlock,
|
||||||
Map<IBasicBlock<SSAInstruction>, TypeReference[]> caughtTypes, boolean hasMonitorOp, AstLexicalInformation lexicalInfo, DebuggingInformation debugInfo) {
|
Map<IBasicBlock<SSAInstruction>, TypeReference[]> caughtTypes, boolean hasMonitorOp, AstLexicalInformation lexicalInfo, DebuggingInformation debugInfo) {
|
||||||
declaredMethods.put(Util.methodEntityToSelector(methodEntity), new ConcreteJavaMethod(methodEntity, owner, cfg, symtab,
|
declaredMethods.put(Util.methodEntityToSelector(methodEntity), new ConcreteJavaMethod(methodEntity, owner, cfg, symtab,
|
||||||
hasCatchBlock, caughtTypes, hasMonitorOp, lexicalInfo, debugInfo));
|
hasCatchBlock, caughtTypes, hasMonitorOp, lexicalInfo, debugInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMethod(CAstEntity methodEntity, IClass owner) {
|
protected void addMethod(CAstEntity methodEntity, IClass owner) {
|
||||||
declaredMethods.put(Util.methodEntityToSelector(methodEntity), new AbstractJavaMethod(methodEntity, owner));
|
declaredMethods.put(Util.methodEntityToSelector(methodEntity), new AbstractJavaMethod(methodEntity, owner));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addField(CAstEntity fieldEntity) {
|
protected void addField(CAstEntity fieldEntity) {
|
||||||
declaredFields.put(Util.fieldEntityToAtom(fieldEntity), new JavaField(fieldEntity, JavaSourceLoaderImpl.this, this, JavaSourceLoaderImpl.this.getAnnotations(fieldEntity)));
|
declaredFields.put(Util.fieldEntityToAtom(fieldEntity), new JavaField(fieldEntity, JavaSourceLoaderImpl.this, this, JavaSourceLoaderImpl.this.getAnnotations(fieldEntity)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +202,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Collection<Annotation> getAnnotations(CAstEntity e) {
|
protected Collection<Annotation> getAnnotations(CAstEntity e) {
|
||||||
Collection<CAstAnnotation> annotations = e.getAnnotations();
|
Collection<CAstAnnotation> annotations = e.getAnnotations();
|
||||||
if (annotations == null || annotations.isEmpty()) {
|
if (annotations == null || annotations.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -227,8 +230,8 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
*
|
*
|
||||||
* @author rfuhrer
|
* @author rfuhrer
|
||||||
*/
|
*/
|
||||||
private class JavaField extends AstField {
|
protected class JavaField extends AstField {
|
||||||
private JavaField(CAstEntity fieldEntity, IClassLoader loader, IClass declaringClass, Collection<Annotation> annotations) {
|
protected JavaField(CAstEntity fieldEntity, IClassLoader loader, IClass declaringClass, Collection<Annotation> annotations) {
|
||||||
super(FieldReference.findOrCreate(declaringClass.getReference(), Atom.findOrCreateUnicodeAtom(fieldEntity.getName()),
|
super(FieldReference.findOrCreate(declaringClass.getReference(), Atom.findOrCreateUnicodeAtom(fieldEntity.getName()),
|
||||||
TypeReference.findOrCreate(loader.getReference(), TypeName.string2TypeName(fieldEntity.getType().getName()))),
|
TypeReference.findOrCreate(loader.getReference(), TypeName.string2TypeName(fieldEntity.getType().getName()))),
|
||||||
fieldEntity.getQualifiers(), declaringClass, declaringClass.getClassHierarchy(), annotations);
|
fieldEntity.getQualifiers(), declaringClass, declaringClass.getClassHierarchy(), annotations);
|
||||||
|
@ -241,7 +244,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
*
|
*
|
||||||
* @author rfuhrer
|
* @author rfuhrer
|
||||||
*/
|
*/
|
||||||
private abstract class JavaEntityMethod extends AstMethod {
|
protected abstract class JavaEntityMethod extends AstMethod {
|
||||||
private final TypeReference[] parameterTypes;
|
private final TypeReference[] parameterTypes;
|
||||||
|
|
||||||
private final TypeReference[] exceptionTypes;
|
private final TypeReference[] exceptionTypes;
|
||||||
|
@ -276,7 +279,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
return parameterTypes[i];
|
return parameterTypes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
private TypeReference[] computeParameterTypes(CAstEntity methodEntity) {
|
protected TypeReference[] computeParameterTypes(CAstEntity methodEntity) {
|
||||||
TypeReference[] types;
|
TypeReference[] types;
|
||||||
CAstType.Function type = (Function) methodEntity.getType();
|
CAstType.Function type = (Function) methodEntity.getType();
|
||||||
int argCount = type.getArgumentTypes().size();
|
int argCount = type.getArgumentTypes().size();
|
||||||
|
@ -303,7 +306,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
return exceptionTypes;
|
return exceptionTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TypeReference[] computeExceptionTypes(CAstEntity methodEntity) {
|
protected TypeReference[] computeExceptionTypes(CAstEntity methodEntity) {
|
||||||
CAstType.Function fType = (Function) methodEntity.getType();
|
CAstType.Function fType = (Function) methodEntity.getType();
|
||||||
Collection<CAstType> exceptionTypes = fType.getExceptionTypes();
|
Collection<CAstType> exceptionTypes = fType.getExceptionTypes();
|
||||||
|
|
||||||
|
@ -329,7 +332,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
*
|
*
|
||||||
* @author rfuhrer
|
* @author rfuhrer
|
||||||
*/
|
*/
|
||||||
private class AbstractJavaMethod extends JavaEntityMethod {
|
protected class AbstractJavaMethod extends JavaEntityMethod {
|
||||||
public AbstractJavaMethod(CAstEntity methodEntity, IClass owner) {
|
public AbstractJavaMethod(CAstEntity methodEntity, IClass owner) {
|
||||||
super(methodEntity, owner);
|
super(methodEntity, owner);
|
||||||
}
|
}
|
||||||
|
@ -528,7 +531,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
((JavaClass) owner).addField(n);
|
((JavaClass) owner).addField(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TypeName toWALATypeName(CAstType type) {
|
protected static TypeName toWALATypeName(CAstType type) {
|
||||||
return TypeName.string2TypeName(type.getName());
|
return TypeName.string2TypeName(type.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -657,9 +660,26 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl {
|
||||||
public AstLexicalWrite LexicalWrite(int iindex, String definer, String globalName, TypeReference type, int rhs) {
|
public AstLexicalWrite LexicalWrite(int iindex, String definer, String globalName, TypeReference type, int rhs) {
|
||||||
return new AstLexicalWrite(iindex, definer, globalName, type, rhs);
|
return new AstLexicalWrite(iindex, definer, globalName, type, rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AstYieldInstruction YieldInstruction(int iindex, int[] rvals) {
|
||||||
|
return new AstYieldInstruction(iindex, rvals);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final InstructionFactory insts = new InstructionFactory();
|
@Override
|
||||||
|
public AstPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef) {
|
||||||
|
assert false;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AstPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value) {
|
||||||
|
assert false;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static final InstructionFactory insts = new InstructionFactory();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InstructionFactory getInstructionFactory() {
|
public InstructionFactory getInstructionFactory() {
|
||||||
|
|
|
@ -27,6 +27,7 @@ import com.ibm.wala.cast.tree.CAstControlFlowMap;
|
||||||
import com.ibm.wala.cast.tree.CAstEntity;
|
import com.ibm.wala.cast.tree.CAstEntity;
|
||||||
import com.ibm.wala.cast.tree.CAstNode;
|
import com.ibm.wala.cast.tree.CAstNode;
|
||||||
import com.ibm.wala.cast.tree.CAstQualifier;
|
import com.ibm.wala.cast.tree.CAstQualifier;
|
||||||
|
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
|
||||||
import com.ibm.wala.cast.tree.CAstType;
|
import com.ibm.wala.cast.tree.CAstType;
|
||||||
import com.ibm.wala.cast.tree.CAstType.Method;
|
import com.ibm.wala.cast.tree.CAstType.Method;
|
||||||
import com.ibm.wala.cast.tree.visit.CAstVisitor;
|
import com.ibm.wala.cast.tree.visit.CAstVisitor;
|
||||||
|
@ -436,6 +437,16 @@ public class JavaCAst2IRTranslator extends AstTranslator {
|
||||||
return getType("java.lang.Exception");
|
return getType("java.lang.Exception");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Position[] getParameterPositions(CAstEntity n) {
|
||||||
|
int offset = 0;
|
||||||
|
Position[] parameterPositions = new Position[ n.getArgumentCount() ];
|
||||||
|
if ((n.getType() instanceof CAstType.Method) && !((CAstType.Method)n.getType()).isStatic()) {
|
||||||
|
offset = 1;
|
||||||
|
}
|
||||||
|
for(int i = 0; i < n.getArgumentCount() - offset; i++) {
|
||||||
|
parameterPositions[i+offset] = n.getPosition(i);
|
||||||
|
}
|
||||||
|
return parameterPositions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="src" path="tests"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="lib" path="lib/htmlparser-1.4.jar"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -0,0 +1 @@
|
||||||
|
/*.html
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.js.html.nu_validator</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.js.html.nu_validator
|
Bundle-SymbolicName: com.ibm.wala.cast.js.html.nu_validator
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Export-Package: com.ibm.wala.cast.js.html.nu_validator,
|
Export-Package: com.ibm.wala.cast.js.html.nu_validator,
|
||||||
com.ibm.wala.cast.js.test
|
com.ibm.wala.cast.js.test
|
||||||
Require-Bundle: com.ibm.wala.cast.js;bundle-version="1.0.0",
|
Require-Bundle: com.ibm.wala.cast.js;bundle-version="1.0.0",
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs = ['src']
|
||||||
|
test.java.srcDirs = ['tests']
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(
|
||||||
|
'nu.validator.htmlparser:htmlparser:1.4',
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.cast.js'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
)
|
||||||
|
testCompile(
|
||||||
|
project(':com.ibm.wala.cast.test'),
|
||||||
|
project(':com.ibm.wala.core.tests'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.cast.js.rhino.test'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.cast.js.test'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
processTestResources {
|
||||||
|
def data = project(':com.ibm.wala.cast.js.test.data')
|
||||||
|
dependsOn data.processTestResources
|
||||||
|
from data.sourceSets.test.resources
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
maxHeapSize = '800M'
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.js.html.nu_validator</artifactId>
|
<artifactId>com.ibm.wala.cast.js.html.nu_validator</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.11</version>
|
<version>4.12</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="src" path="testdata"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.js.nodejs.test</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.js.nodejs.test
|
Bundle-SymbolicName: com.ibm.wala.cast.js.nodejs.test
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Export-Package: NodejsRequireJsonTest,
|
Export-Package: NodejsRequireJsonTest,
|
||||||
NodejsRequireTargetSelectorResolve,
|
NodejsRequireTargetSelectorResolve,
|
||||||
NodejsRequireTargetSelectorResolve.requireDynamic,
|
NodejsRequireTargetSelectorResolve.requireDynamic,
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
sourceSets.test {
|
||||||
|
java.srcDirs = ['src']
|
||||||
|
resources.srcDirs = ['testdata']
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile(
|
||||||
|
'junit:junit:4.12',
|
||||||
|
project(':com.ibm.wala.cast.js.nodejs'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
maxHeapSize = '800M'
|
||||||
|
|
||||||
|
// fails with java.lang.OutOfMemoryError for unknown reasons
|
||||||
|
exclude '**/NodejsRequireTargetSelectorResolveTest.class'
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>com.ibm.wala.cast.js.nodejs.test</artifactId>
|
<artifactId>com.ibm.wala.cast.js.nodejs.test</artifactId>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.11</version>
|
<version>4.12</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" path="src">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" path="dat">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry exported="true" kind="lib" path="lib/json-20160212.jar"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.cast"/>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.cast.js"/>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.cast.js.rhino"/>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.core"/>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.util"/>
|
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/com.ibm.wala.shrike"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.js.nodejs</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.js.nodejs
|
Bundle-SymbolicName: com.ibm.wala.cast.js.nodejs
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Export-Package: com.ibm.wala.cast.js.nodejs,
|
Export-Package: com.ibm.wala.cast.js.nodejs,
|
||||||
org.json
|
org.json
|
||||||
Require-Bundle: com.ibm.wala.cast.js;bundle-version="1.3.10",
|
Require-Bundle: com.ibm.wala.cast.js;bundle-version="1.3.10",
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
dependencies {
|
||||||
|
compile(
|
||||||
|
'commons-io:commons-io:2.4',
|
||||||
|
'org.json:json:20160212',
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.cast.js'),
|
||||||
|
project(':com.ibm.wala.cast.js.rhino'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
task downloadNodeJS(type: VerifiedDownload) {
|
||||||
|
src 'https://api.github.com/repos/nodejs/node/zipball/0a604e92e258c5ee2752d763e50721e35053f135'
|
||||||
|
dest "$temporaryDir/nodejs.zip"
|
||||||
|
checksum '33c5ba7a5d45644e70d268d8ad3e57df'
|
||||||
|
}
|
||||||
|
|
||||||
|
task unpackNodeJSLib(type: Copy, dependsOn: downloadNodeJS) {
|
||||||
|
from(zipTree(downloadNodeJS.dest)) {
|
||||||
|
include 'nodejs-node-0a604e9/lib/*.js'
|
||||||
|
eachFile {
|
||||||
|
relativePath new RelativePath(!directory, relativePath.lastName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
into 'dat/core-modules'
|
||||||
|
includeEmptyDirs false
|
||||||
|
}
|
||||||
|
|
||||||
|
task cleanUnpackNodeJSLib(type: Delete) {
|
||||||
|
delete fileTree(dir: 'dat/core-modules', include: '*.js')
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources.dependsOn unpackNodeJSLib
|
||||||
|
clean.dependsOn cleanUnpackNodeJSLib
|
||||||
|
|
||||||
|
sourceSets.main {
|
||||||
|
java.srcDirs = ['src']
|
||||||
|
resources.srcDirs = ['dat']
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>com.ibm.wala</groupId>
|
<groupId>com.ibm.wala</groupId>
|
||||||
<artifactId>WALA</artifactId>
|
<artifactId>WALA</artifactId>
|
||||||
<version>1.4.4-SNAPSHOT</version>
|
<version>1.5.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<packaging>eclipse-plugin</packaging>
|
<packaging>eclipse-plugin</packaging>
|
||||||
<artifactId>com.ibm.wala.cast.js.nodejs</artifactId>
|
<artifactId>com.ibm.wala.cast.js.nodejs</artifactId>
|
||||||
|
|
|
@ -116,8 +116,6 @@ public class NodejsRequireTargetSelector implements MethodTargetSelector {
|
||||||
IClass script = builder.getClassHierarchy()
|
IClass script = builder.getClassHierarchy()
|
||||||
.lookupClass(TypeReference.findOrCreate(jsLoader.getReference(), className));
|
.lookupClass(TypeReference.findOrCreate(jsLoader.getReference(), className));
|
||||||
|
|
||||||
System.err.println(builder.getClassHierarchy());
|
|
||||||
|
|
||||||
IMethod method = script.getMethod(AstMethodReference.fnSelector);
|
IMethod method = script.getMethod(AstMethodReference.fnSelector);
|
||||||
previouslyRequired.put(sourceModule.getClassName(), method);
|
previouslyRequired.put(sourceModule.getClassName(), method);
|
||||||
|
|
||||||
|
|
|
@ -13,13 +13,16 @@ package com.ibm.wala.cast.js.nodejs;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
|
|
||||||
import com.ibm.wala.cast.ipa.callgraph.CAstCallGraphUtil;
|
import com.ibm.wala.cast.ipa.callgraph.CAstCallGraphUtil;
|
||||||
import com.ibm.wala.classLoader.SourceFileModule;
|
import com.ibm.wala.classLoader.SourceFileModule;
|
||||||
|
import com.ibm.wala.util.collections.HashMapFactory;
|
||||||
import com.ibm.wala.util.collections.HashSetFactory;
|
import com.ibm.wala.util.collections.HashSetFactory;
|
||||||
import com.ibm.wala.util.io.TemporaryFile;
|
import com.ibm.wala.util.io.TemporaryFile;
|
||||||
|
|
||||||
|
@ -51,8 +54,18 @@ public class NodejsRequiredCoreModule extends NodejsRequiredSourceModule {
|
||||||
return NodejsRequiredCoreModule.class.getClassLoader().getResourceAsStream("core-modules/" + name + ".js");
|
return NodejsRequiredCoreModule.class.getClassLoader().getResourceAsStream("core-modules/" + name + ".js");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Map<String,File> names = HashMapFactory.make();
|
||||||
|
|
||||||
public static NodejsRequiredCoreModule make(String name) throws IOException {
|
public static NodejsRequiredCoreModule make(String name) throws IOException {
|
||||||
File file = new File(System.getProperty("java.io.tmpdir"), name+".js");
|
if (! names.containsKey(name)) {
|
||||||
|
java.nio.file.Path p = Files.createTempDirectory("nodejs");
|
||||||
|
File f = new File(p.toFile(), name + ".js");
|
||||||
|
f.deleteOnExit();
|
||||||
|
p.toFile().deleteOnExit();
|
||||||
|
names.put(name, f);
|
||||||
|
}
|
||||||
|
File file = names.get(name);
|
||||||
TemporaryFile.streamToFile(file, getModule(name));
|
TemporaryFile.streamToFile(file, getModule(name));
|
||||||
SourceFileModule sourceFileModule = CAstCallGraphUtil.makeSourceModule(file.toURI().toURL(), file.getName());
|
SourceFileModule sourceFileModule = CAstCallGraphUtil.makeSourceModule(file.toURI().toURL(), file.getName());
|
||||||
return new NodejsRequiredCoreModule(file, sourceFileModule);
|
return new NodejsRequiredCoreModule(file, sourceFileModule);
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="harness-src"/>
|
|
||||||
<classpathentry kind="lib" path="/com.ibm.wala.cast.js.test.data/examples-src"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.ibm.wala.cast.js.rhino.test</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.PluginNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
|
||||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
|
||||||
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.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: %Bundle-Name
|
Bundle-Name: %Bundle-Name
|
||||||
Bundle-SymbolicName: com.ibm.wala.cast.js.rhino.test
|
Bundle-SymbolicName: com.ibm.wala.cast.js.rhino.test
|
||||||
Bundle-Version: 1.4.4.qualifier
|
Bundle-Version: 1.5.1.qualifier
|
||||||
Bundle-Vendor: %Bundle-Vendor
|
Bundle-Vendor: %Bundle-Vendor
|
||||||
Require-Bundle: com.ibm.wala.cast.js.rhino;bundle-version="1.0.0",
|
Require-Bundle: com.ibm.wala.cast.js.rhino;bundle-version="1.0.0",
|
||||||
com.ibm.wala.cast.js;bundle-version="1.0.0",
|
com.ibm.wala.cast.js;bundle-version="1.0.0",
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
plugins {
|
||||||
|
id 'com.github.hauner.jarTest'
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets.test.java.srcDirs = ['harness-src']
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile(
|
||||||
|
'junit:junit:4.12',
|
||||||
|
project(':com.ibm.wala.cast'),
|
||||||
|
project(':com.ibm.wala.cast.js'),
|
||||||
|
project(':com.ibm.wala.cast.js.rhino'),
|
||||||
|
project(':com.ibm.wala.core'),
|
||||||
|
project(':com.ibm.wala.shrike'),
|
||||||
|
project(':com.ibm.wala.util'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.cast.js.test'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.cast.test'),
|
||||||
|
project(configuration: 'testArchives', path: ':com.ibm.wala.core.tests'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
processTestResources {
|
||||||
|
def data = project(':com.ibm.wala.cast.js.test.data')
|
||||||
|
dependsOn data.processTestResources
|
||||||
|
from data.sourceSets.test.resources
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
environment 'TRAVIS', 1
|
||||||
|
maxHeapSize = '800M'
|
||||||
|
|
||||||
|
if (gradle.startParameter.offline)
|
||||||
|
exclude '**/FieldBasedJQueryTest.class'
|
||||||
|
}
|
||||||
|
|
||||||
|
task cleanTestExtras(type: Delete) {
|
||||||
|
delete 'actual.dump'
|
||||||
|
delete 'expected.dump'
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanTest.dependsOn cleanTestExtras
|
|
@ -1,6 +1,5 @@
|
||||||
source.. = harness-src/
|
source.. = harness-src/
|
||||||
output.. = bin/,\
|
output.. = bin/
|
||||||
/com.ibm.wala.cast.js.test.data/examples-src/
|
|
||||||
bin.includes = META-INF/,\
|
bin.includes = META-INF/,\
|
||||||
.,\
|
.,\
|
||||||
OSGI-INF/l10n/bundle.properties,\
|
OSGI-INF/l10n/bundle.properties,\
|
||||||
|
|
|
@ -17,7 +17,8 @@ public class FieldBasedCGGamesTest extends AbstractFieldBasedTest {
|
||||||
runTestExceptOnTravis(new URL("http://www.themaninblue.com/experiment/BunnyHunt/"), new Object[][]{}, BuilderType.OPTIMISTIC);
|
runTestExceptOnTravis(new URL("http://www.themaninblue.com/experiment/BunnyHunt/"), new Object[][]{}, BuilderType.OPTIMISTIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
// seems to break with http issues
|
||||||
|
//@Test
|
||||||
public void testBeslimed() throws IOException, WalaException, Error, CancelException {
|
public void testBeslimed() throws IOException, WalaException, Error, CancelException {
|
||||||
runTestExceptOnTravis(new URL("http://www.markus-inger.de/test/game.php"), new Object[][]{}, BuilderType.OPTIMISTIC);
|
runTestExceptOnTravis(new URL("http://www.markus-inger.de/test/game.php"), new Object[][]{}, BuilderType.OPTIMISTIC);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?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.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/vis/JsViewerDriver.java"/>
|
<listEntry value="/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/vis/JsViewerDriver.java"/>
|
||||||
|
@ -6,8 +6,9 @@
|
||||||
<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>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.vis.JsViewerDriver"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.vis.JsViewerDriver"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="file:${workspace_loc}/com.ibm.wala.cast.js.test/examples-src/pages/page1.html"/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=""file:${resource_loc:/com.ibm.wala.cast.js.test/examples-src/pages/page1.html}""/>
|
||||||
<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="-ea -Xmx800M"/>
|
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -Xmx800M"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|
|
@ -11,6 +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.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestForInLoopHackRhino"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.ibm.wala.cast.js.test.TestForInLoopHackRhino"/>
|
||||||
<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"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue