OPIUM performs inference of method purity (i.e. deterministic behavior and absence of side effects) on Java (bytecode) projects. Its results can be used for bug detection and program comprehension.
OPIUM was described in A Unified Lattice Model and Framework for Purity Analyses published at ASE 2018. Purity results for the JOlden benchmark are available here.
A version of OPIUM ready to to be executed can be downloaded here.
A current state of OPIUM can be obtained from
OPAL's repository where OPIUM is implemented by class
org.opalj.support.info.Purity
.
OPIUM uses a command line interface. To simply analyse an application, use
java -jar OPIUM.jar -cp <path to your application
.
Use
java -jar OPIUM.jar
to print a list of additional parameters that OPIUM understands.
OPIUM can be used to analyze Java bytecode up to and including Java 10.
The following changes have been made to OPIUM and its purity model since the paper was published: