The latest release is always found on Maven Central and can therefore be added to your project as standard library dependency.
If you want to use the snapshot version do not forget to add the respective resolver:
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
If you want to use OPAL for the development of static analyses, you can either use the latest release found on Maven Central or just checkout and build the current development snapshot of OPAL found on GitHub. In general, using the development snapshot; i.e., the develop
branch of OPAL is very safe and gives you access to the latest features, improvements and bug fixes.
Go to GitHub to checkout OPAL and to read how to compile and deploy it.
OPAL comes with a large number of code snippets and small (i.e., one-class) analyses to demonstrate various features.
OPAL consists of multiple sub projects and tools which are described in the following.
Combines all of OPAL's subproject for ease of use.
libraryDependencies += "de.opal-project" % "framework_2.13" % "5.0.0"
Contains general data structures and algorithms particular useful in the context of static analysis. E.g., graph algorithms, such as an implementation of Tarjan's algorithm for finding strongly connected components. The implementations are designed with scalability in mind and should be able to process millions of nodes.
libraryDependencies += "de.opal-project" % "common_2.13" % "5.0.0"
The static analysis framework is a generally useful framework for developing static analyses. The framework has wide ranging support for very different types of static analyses and automatically parallels their execution. The framework only depends on Common
and can be flexibly combined with other static analyses frameworks (e.g., BCEL, SOOT, Wala, ASM,... )
libraryDependencies += "de.opal-project" % "static-analysis-infrastructure_2.13" % "5.0.0"
The bytecode toolkit implements a generic infrastructure for parsing Java class files. Additionally, it provides a default representation for Java bytecode that can be used to analyze class files. That representation provides extensive support for pattern matching on Java bytecode to facilitate writing basic analyses.
libraryDependencies += "de.opal-project" % "bytecode-representation_2.13" % "5.0.0"
The abstract interpretation framework is a highly-customizable framework for the lightweight abstract interpretation of the Java bytecode. The framework was designed with ease of use and customizability in mind.
libraryDependencies += "de.opal-project" % "abstract-interpretation-framework_2.13" % "5.0.0"
The three-address-code toolkit provides a more human readable representation of the bytecode that includes additional information derived by the abstract interpretation framework.
libraryDependencies += "de.opal-project" % "three-address-code_2.13" % "5.0.0"
The architecture validation framework facilitates the development of tools for specifying and validating software architectures.
libraryDependencies += "de.opal-project" % "architecture-validation_2.13" % "5.0.0"
Provides support for the analysis of LLVM IR.
libraryDependencies += "de.opal-project" % "llvm_2.13" % "5.0.0"
Provides support for the analyis of APKs, with automatic conversion from dalvik to java byte code.
libraryDependencies += "de.opal-project" % "apk_2.13" % "5.0.0"