package fpcf
Package Members
- package analyses
- package properties
OPAL is a Scala-based framework for the static analysis, manipulation and creation of Java bytecode.
OPAL is a Scala-based framework for the static analysis, manipulation and creation of Java bytecode. OPAL is designed with performance, scalability and adaptability in mind.
Its main components are:
Common
) which provides generally useful data-structures and algorithms
for static analyses.Static Analysis Infrastructure
)) that can be used to
create arbitrary representations.
Bytecode Disassembler
).Bytecode Representation
- org.opalj.br).Abstract Interpretation Framework
- org.opalj.ai).Unless explicitly noted, OPAL is thread safe. I.e., the classes defined by OPAL can be considered to be thread safe unless otherwise stated. (For example, it is possible to read and process class files concurrently without explicit synchronization on the client side.)
null
ValuesUnless explicitly noted, OPAL does not null
values
I.e., fields that are accessible will never contain null
values and methods will
never return null
. If a method accepts null
as a value for a parameter or
returns a null
value it is always explicitly documented.
In general, the behavior of methods that are passed null
values is undefined unless
explicitly documented.
For efficiency reasons, OPAL sometimes uses mutable data-structures internally.
After construction time, these data-structures are generally represented using
their generic interfaces (e.g., scala.collection.{Set,Map}
). However, a downcast
(e.g., to add/remove elements) is always forbidden as it would effectively prevent
thread-safety.
OPAL makes heavy use of Scala's Assertion Facility to facilitate writing correct
code. Hence, for production builds (after thorough testing(!)) it is
highly recommend to build OPAL again using -Xdisable-assertions
.
Common definitions related to the definition and processing of three address code.
Common definitions related to the definition and processing of three address code.