Packages

  • package root
    Definition Classes
    root
  • package org
    Definition Classes
    root
  • package opalj

    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:

    • a library (Common) which provides generally useful data-structures and algorithms for static analyses.
    • a framework for implementing lattice based static analyses (Static Analysis Infrastructure)
    • a framework for parsing Java bytecode (Bytecode Infrastructure) that can be used to create arbitrary representations.
    • a library to create a one-to-one in-memory representation of Java bytecode (Bytecode Disassembler).
    • a library to create a representation of Java bytecode that facilitates writing simple static analyses (Bytecode Representation - org.opalj.br).
    • a scalable, easily customizable framework for the abstract interpretation of Java bytecode (Abstract Interpretation Framework - org.opalj.ai).
    • a library to extract dependencies between code elements and to facilitate checking architecture definitions.
    • a library for the lightweight manipulation and creation of Java bytecode (Bytecode Assembler).

    General Design Decisions

    Thread Safety

    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.)

    No null Values

    Unless 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.

    No Typecasts for Collections

    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.

    Assertions

    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.

    Definition Classes
    org
  • package br

    In this representation of Java bytecode references to a Java class file's constant pool and to attributes are replaced by direct references to the corresponding constant pool entries.

    In this representation of Java bytecode references to a Java class file's constant pool and to attributes are replaced by direct references to the corresponding constant pool entries. This facilitates developing analyses and fosters comprehension.

    Based on the fact that indirect references to constant pool entries are resolved and replaced by direct references this representation is called the resolved representation.

    This representation of Java bytecode is considered as OPAL's standard representation for writing Scala based analyses. This representation is engineered such that it facilitates writing analyses that use pattern matching.

    Definition Classes
    opalj
  • package analyses

    Defines commonly useful type aliases.

    Defines commonly useful type aliases.

    Definition Classes
    br
  • package cfg
    Definition Classes
    br
  • package collection
    Definition Classes
    br
  • package cp

    Implementation of classes to represent/recreate a class file's constant pool.

    Implementation of classes to represent/recreate a class file's constant pool.

    Definition Classes
    br
  • package fpcf
    Definition Classes
    br
  • package analyses
  • package properties
  • BasicFPCFEagerAnalysisScheduler
  • BasicFPCFLazyAnalysisScheduler
  • BasicFPCFTransformerScheduler
  • BasicFPCFTriggeredAnalysisScheduler
  • DefaultFPCFAnalysis
  • FPCFAnalysesManager
  • FPCFAnalysesManagerKey
  • FPCFAnalysesRegistry
  • FPCFAnalysis
  • FPCFAnalysisScheduler
  • FPCFEagerAnalysisScheduler
  • FPCFLazyAnalysisScheduler
  • FPCFLazyLikeAnalysisScheduler
  • FPCFTransformerScheduler
  • FPCFTriggeredAnalysisScheduler
  • PropertyStoreKey
  • package instructions

    Common instruction sequences.

    Common instruction sequences.

    Definition Classes
    br
  • package reader

    Defines convenience methods related to reading in class files.

    Defines convenience methods related to reading in class files.

    Definition Classes
    br

package fpcf

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Package Members

  1. package analyses
  2. package properties

Type Members

  1. trait BasicFPCFEagerAnalysisScheduler extends FPCFEagerAnalysisScheduler

    A simple eager analysis scheduler for those analyses that do not perform special initialization steps.

  2. trait BasicFPCFLazyAnalysisScheduler extends FPCFLazyAnalysisScheduler

    A simple eager analysis scheduler for those analyses that do not perform special initialization steps.

  3. trait BasicFPCFTransformerScheduler extends FPCFTransformerScheduler
  4. trait BasicFPCFTriggeredAnalysisScheduler extends FPCFTriggeredAnalysisScheduler
  5. abstract class DefaultFPCFAnalysis extends FPCFAnalysis
  6. class FPCFAnalysesManager extends AnyRef

    Enables the execution of a set of analyses.

    Enables the execution of a set of analyses.

    To get an instance use the respective FPCFAnalysesManagerKey.

  7. trait FPCFAnalysis extends ProjectBasedAnalysis

    Common super-trait of all analysis which use MISAF.

    Common super-trait of all analysis which use MISAF. (Formerly known as Fixpoint-Computations Framework/PropertyStore.)

  8. trait FPCFAnalysisScheduler extends ComputationSpecification[FPCFAnalysis]

    Specification of the properties of an analysis.

    Specification of the properties of an analysis.

    Note

    It is possible to use an analysis that directly uses the property store and an analysis that uses this factory infrastructure at the same time.

  9. trait FPCFEagerAnalysisScheduler extends FPCFAnalysisScheduler

    Factory for FPCF analyses which should be directly started/scheduled.

  10. trait FPCFLazyAnalysisScheduler extends FPCFLazyLikeAnalysisScheduler

    The underlying analysis will only be registered with the property store and scheduled for a specific entity if queried.

  11. trait FPCFLazyLikeAnalysisScheduler extends FPCFAnalysisScheduler

  12. trait FPCFTransformerScheduler extends FPCFLazyLikeAnalysisScheduler

    The underlying analysis will only be registered with the property store and called by the store when a final property of kind sourcePK for an entity of type E is computed.

  13. trait FPCFTriggeredAnalysisScheduler extends FPCFAnalysisScheduler

    The underlying analysis will only be registered with the property store and will be triggered if a property of the specified kind is derived for a specific entity.

    The underlying analysis will only be registered with the property store and will be triggered if a property of the specified kind is derived for a specific entity. The analysis computing the property which triggers this analysis has to be another triggered analysis, an eager analysis or a transformer; in the latter case the transformer's source property must not depend (neither directly nor indirectly) on a lazy analysis.

Value Members

  1. object FPCFAnalysesManager
  2. object FPCFAnalysesManagerKey extends ProjectInformationKey[FPCFAnalysesManager, Nothing]

    The key object to get the FPCFAnalysesManager.

    The key object to get the FPCFAnalysesManager.

    Example:
    1. To get an instance of the FPCFAnalysesManager pass this key to a project's get method.

  3. object FPCFAnalysesRegistry

    Registry for all factories for analyses that are implemented using the fixpoint computations framework (FPCF).

    Registry for all factories for analyses that are implemented using the fixpoint computations framework (FPCF).

    The registry primarily serves as a central container that can be queried by subsequent tools.

    The analyses that are part of OPAL are already registered.

    Note

    Analysis schedules can be computed using the PropertiesComputationsScheduler.

    Thread Safety

    The registry is thread safe.

  4. object PropertyStoreKey extends ProjectInformationKey[PropertyStore, (List[PropertyStoreContext[AnyRef]]) => PropertyStore]

    The key object to get the project's org.opalj.fpcf.PropertyStore.

    The key object to get the project's org.opalj.fpcf.PropertyStore.

    Note

    It is possible to set the project's debug flag using the project's org.opalj.br.analyses.PropertyStore.debug config key.

Ungrouped