Extends the Checker Framework
Currently supports inference of Universe Types, Ownership Types, Reference Immutability(reim), EnerJ, SFlow, DFlow and AJ.
Download: issta-artifact-2015.zip (144M) contains executable binary, or issta2015.zip (1.8G) contains executable binary and all benchmarks. NOTE: This is the implementation in the ISSTA'15 paper. Unzip it and follow the instructions in README.
Download: type-inference-0.1.2.zip contains executable binary and source code. NOTE: It contains Reference Immutability(reim), Ownership Types, and Universe Types in this zip file. Others will be added soon.
The following instructions assume an Unix-like (e.g Mac, Linux) environment.
Requirement: You must have JDK 6 or later installed. The binary release was compiled and tested under JDK 6 on Mac OS X 10.7 and Ubuntu 12.04.
javac -version
if you have added it to your PATH or ./binary/javac
if you didn't, it should output: javac 1.7.0-jsr308-1.3.0
This is the implementation in the OOPSLA'12 paper.
Suppose that we want to do the inference for one test case included in type-inference-0.1.2.zip: inference-tests/CellClient.java
.
./binary/javai-reim inference-tests/CellClient.java
The inference results are dumped to:
run-jolden-ri
in 2012-oopsla-eval to run the benchmark jolden
-Xbootclasspath/p:../../../plugins/edu.rpi.cs.reiminfer_1.0.0/lib/jsr308-all.jar
Install Oracle JDK 6 and have JAVA_HOME set correctly. JDK 7 and up should be supported but we haven't tested it yet.
Insatll Apache Ant.
Build jsr308-langtools:
cd type-inference/inference-framework/jsr308-langtools/make
ant
Build annotation-tools:
cd type-inference/inference-framework/annotation-tools
ant
Build checkers:
cd type-inference/inference-framework/checker-framework/checkers
ant bindist
(Optional) Build annotated JDK for some specific type system:
cd type-inference/inference-framework/checker-framework/checkers/jdk
vim Makefile
Edit Makefile and find the line like:
CHECKER_DIRS = sflow
Change sflow to other type system, e.g. reim. Then run
make
Lastly, copy the generated jdk.jar to type-inference/inference-framework/checker-framework/checkers (This is automatically done when you run ant bindist in step 5)
copy jdk.jar ../binary/
Test run:
cd type-inference/inference-framework/checker-framework/checkers
# Run the inference of SFlow type system.
binary/javai-sflow
Note: Inference results for detecting information violations in web apps are available: webapps-results.tgz. The instantiated inference will be released shortly (available in the source repository).