Packages

p

org.opalj.fpcf

analyses

package analyses

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. class ClassImmutabilityAnalysis extends FPCFAnalysis

    Determines the mutability of instances of a specific class.

    Determines the mutability of instances of a specific class. In case the class is abstract the (implicit) assumption is made that all abstract methods (if any) are/can be implemented without necessarily/always requiring additional state; i.e., only the currently defined fields are taken into consideration. An interfaces is always considered to be immutable. If you need to know if all possible instances of an interface or some type; i.e., all instances of the classes that implement the respective interface/inherit from some class are immutable, you can query the org.opalj.fpcf.properties.TypeImmutability property.

    In case of incomplete class hierarchies or if the class hierarchy is complete, but some class files are not found the sound approximation is done that the respective classes are mutable.

    This analysis uses the org.opalj.fpcf.properties.FieldMutability property to determine those fields which could be final, but which are not declared as final.

    TODO Discuss the case if a constructor calls an instance method which is overrideable (See Verifiable Functional Purity Paper for some arguements.)

  2. trait ClassImmutabilityAnalysisScheduler extends ComputationSpecification
  3. class ConfiguredPurity extends AnyRef
  4. class L0AllocationFreenessAnalysis extends FPCFAnalysis

    A simple analysis that identifies methods that never allocate any objects/arrays.

  5. trait L0AllocationFreenessAnalysisScheduler extends ComputationSpecification
  6. class L0CompileTimeConstancyAnalysis extends FPCFAnalysis

    A simple analysis that identifies constant (effectively) final static fields that are deterministically initialized to the same value on every program execution.

    A simple analysis that identifies constant (effectively) final static fields that are deterministically initialized to the same value on every program execution. This analysis just examines the ConstantValue attribute of the field.

  7. trait L0CompileTimeConstancyAnalysisScheduler extends ComputationSpecification
  8. class L0FieldMutabilityAnalysis extends FPCFAnalysis

    Determines if a private, static, non-final field is always initialized at most once or if a field is or can be mutated after (lazy) initialization.

    Determines if a private, static, non-final field is always initialized at most once or if a field is or can be mutated after (lazy) initialization. Field read and writes at initialization time (e.g., if the current class object is registered in some publically available data-store) are not considered. This is in-line with the semantics of final, which also does not prevent reads of partially initialized objects.

  9. trait L0FieldMutabilityAnalysisScheduler extends ComputationSpecification
  10. class L0PurityAnalysis extends FPCFAnalysis

    Very simple, fast, sound but also imprecise analysis of the purity of methods.

    Very simple, fast, sound but also imprecise analysis of the purity of methods. See the org.opalj.fpcf.properties.Purity property for details regarding the precise semantics of (Im)Pure.

    This analysis is a very, very shallow implementation that immediately gives up, when something "complicated" (e.g., method calls which take objects) is encountered. It also does not perform any significant control-/data-flow analyses.

  11. trait L0PurityAnalysisScheduler extends ComputationSpecification
  12. class L0SelfReferenceLeakageAnalysis extends FPCFAnalysis

    A shallow analysis that computes the self reference leakage property.

  13. class L1ThrownExceptionsAnalysis extends FPCFAnalysis

    Analysis of thrown exceptions; computes the org.opalj.fpcf.properties.ThrownExceptions property.

  14. class MethodComplexityAnalysis extends AnyRef

    A shallow analysis that tries to identify methods that are relatively simple, that is, which don't have loops and don't depend on other (more) complex methods.

    A shallow analysis that tries to identify methods that are relatively simple, that is, which don't have loops and don't depend on other (more) complex methods. For such methods it often makes sense to "inline them at analysis time".

  15. class StaticDataUsageAnalysis extends FPCFAnalysis

    A simple analysis that identifies methods that use global state that may vary during one or between several program executions.

  16. trait StaticDataUsageAnalysisScheduler extends ComputationSpecification
  17. abstract class ThrownExceptionsAnalysisScheduler extends ComputationSpecification
  18. class TypeImmutabilityAnalysis extends FPCFAnalysis

    Determines the mutability of a specific type by checking if all subtypes of a specific type are immutable and checking that the set of types is closed.

  19. trait TypeImmutabilityAnalysisScheduler extends ComputationSpecification
  20. class VirtualCallAggregatingEscapeAnalysis extends FPCFAnalysis

    Aggregates the escape information for virtual formal parameters.

    Aggregates the escape information for virtual formal parameters. That are all possible call targets that override the method attached to the virtual method.

    See also

    org.opalj.fpcf.properties.EscapeProperty org.opalj.br.analyses.VirtualFormalParameter

  21. sealed trait VirtualCallAggregatingEscapeAnalysisScheduler extends ComputationSpecification
  22. class VirtualMethodAllocationFreenessAnalysis extends FPCFAnalysis

    Determines the aggregated allocation freeness for virtual methods.

  23. trait VirtualMethodAllocationFreenessAnalysisScheduler extends ComputationSpecification
  24. class VirtualMethodPurityAnalysis extends FPCFAnalysis

    Determines the aggregated purity for virtual methods.

  25. trait VirtualMethodPurityAnalysisScheduler extends ComputationSpecification
  26. class VirtualMethodStaticDataUsageAnalysis extends FPCFAnalysis

    Determines the aggregated static data usage for virtual methods.

  27. trait VirtualMethodStaticDataUsageAnalysisScheduler extends ComputationSpecification
  28. class VirtualMethodThrownExceptionsAnalysis extends FPCFAnalysis

    Aggregates the exceptions thrown by a method over all methods which override the respective method.

  29. trait VirtualMethodThrownExceptionsAnalysisScheduler extends AnyRef
  30. class VirtualReturnValueFreshnessAnalysis extends FPCFAnalysis

    An analysis that aggregates whether the return value for all possible methods represented by a given org.opalj.br.DeclaredMethod are always freshly allocated.

  31. sealed trait VirtualReturnValueFreshnessAnalysisScheduler extends ComputationSpecification

Value Members

  1. object ConfiguredPurityKey extends ProjectInformationKey[ConfiguredPurity, Nothing]
  2. object EagerClassImmutabilityAnalysis extends ClassImmutabilityAnalysisScheduler with FPCFEagerAnalysisScheduler

    Scheduler to run the immutability analysis eagerly.

  3. object EagerL0AllocationFreenessAnalysis extends L0AllocationFreenessAnalysisScheduler with FPCFEagerAnalysisScheduler
  4. object EagerL0CompileTimeConstancyAnalysis extends L0CompileTimeConstancyAnalysisScheduler with FPCFEagerAnalysisScheduler
  5. object EagerL0FieldMutabilityAnalysis extends L0FieldMutabilityAnalysisScheduler with FPCFEagerAnalysisScheduler

    Factory object to create instances of the FieldMutabilityAnalysis.

  6. object EagerL0PurityAnalysis extends L0PurityAnalysisScheduler with FPCFEagerAnalysisScheduler
  7. object EagerL1ThrownExceptionsAnalysis extends ThrownExceptionsAnalysisScheduler with FPCFEagerAnalysisScheduler

    Factory and runner for the L1ThrownExceptionsAnalysis.

  8. object EagerStaticDataUsageAnalysis extends StaticDataUsageAnalysisScheduler with FPCFEagerAnalysisScheduler
  9. object EagerTypeImmutabilityAnalysis extends TypeImmutabilityAnalysisScheduler with FPCFEagerAnalysisScheduler

    Starter for the type immutability analysis.

  10. object EagerVirtualCallAggregatingEscapeAnalysis extends VirtualCallAggregatingEscapeAnalysisScheduler with FPCFEagerAnalysisScheduler
  11. object EagerVirtualMethodAllocationFreenessAnalysis extends VirtualMethodAllocationFreenessAnalysisScheduler with FPCFEagerAnalysisScheduler
  12. object EagerVirtualMethodPurityAnalysis extends VirtualMethodPurityAnalysisScheduler with FPCFEagerAnalysisScheduler
  13. object EagerVirtualMethodStaticDataUsageAnalysis extends VirtualMethodStaticDataUsageAnalysisScheduler with FPCFEagerAnalysisScheduler
  14. object EagerVirtualMethodThrownExceptionsAnalysis extends VirtualMethodThrownExceptionsAnalysisScheduler with FPCFEagerAnalysisScheduler

    Factory/executor of the thrown exceptions analysis.

  15. object EagerVirtualReturnValueFreshnessAnalysis extends VirtualReturnValueFreshnessAnalysisScheduler with FPCFEagerAnalysisScheduler
  16. object L0SelfReferenceLeakageAnalysis extends FPCFEagerAnalysisScheduler
  17. object LazyClassImmutabilityAnalysis extends ClassImmutabilityAnalysisScheduler with FPCFLazyAnalysisScheduler

    Scheduler to run the immutability analysis lazily.

  18. object LazyL0AllocationFreenessAnalysis extends L0AllocationFreenessAnalysisScheduler with FPCFLazyAnalysisScheduler
  19. object LazyL0CompileTimeConstancyAnalysis extends L0CompileTimeConstancyAnalysisScheduler with FPCFLazyAnalysisScheduler
  20. object LazyL0FieldMutabilityAnalysis extends L0FieldMutabilityAnalysisScheduler with FPCFLazyAnalysisScheduler
  21. object LazyL0PurityAnalysis extends L0PurityAnalysisScheduler with FPCFLazyAnalysisScheduler
  22. object LazyL1ThrownExceptionsAnalysis extends ThrownExceptionsAnalysisScheduler with FPCFLazyAnalysisScheduler

    Factory and runner for the L1ThrownExceptionsAnalysis.

  23. object LazyStaticDataUsageAnalysis extends StaticDataUsageAnalysisScheduler with FPCFLazyAnalysisScheduler
  24. object LazyTypeImmutabilityAnalysis extends TypeImmutabilityAnalysisScheduler with FPCFLazyAnalysisScheduler
  25. object LazyVirtualCallAggregatingEscapeAnalysis extends VirtualCallAggregatingEscapeAnalysisScheduler with FPCFLazyAnalysisScheduler
  26. object LazyVirtualMethodAllocationFreenessAnalysis extends VirtualMethodAllocationFreenessAnalysisScheduler with FPCFLazyAnalysisScheduler
  27. object LazyVirtualMethodPurityAnalysis extends VirtualMethodPurityAnalysisScheduler with FPCFLazyAnalysisScheduler
  28. object LazyVirtualMethodStaticDataUsageAnalysis extends VirtualMethodStaticDataUsageAnalysisScheduler with FPCFLazyAnalysisScheduler
  29. object LazyVirtualMethodThrownExceptionsAnalysis extends VirtualMethodThrownExceptionsAnalysisScheduler with FPCFLazyAnalysisScheduler

    Factory/executor of the thrown exceptions analysis.

  30. object LazyVirtualReturnValueFreshnessAnalysis extends VirtualReturnValueFreshnessAnalysisScheduler with FPCFLazyAnalysisScheduler

Ungrouped