Packages

p

org.opalj.br.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.br.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.br.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 FPCFAnalysisScheduler
  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 FPCFAnalysisScheduler
  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 FPCFAnalysisScheduler
  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 FPCFAnalysisScheduler
  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.br.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 FPCFAnalysisScheduler
  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.br.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 FPCFAnalysisScheduler
  17. abstract class ThrownExceptionsAnalysisScheduler extends FPCFAnalysisScheduler
  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 FPCFAnalysisScheduler
  20. class UnsoundPrematurelyReadFieldsAnalysis extends FPCFAnalysis

    Unsound 'analysis' that declares all fields to be org.opalj.br.fpcf.properties.NotPrematurelyReadFields.

  21. trait UnsoundPrematurelyReadFieldsAnalysisScheduler extends FPCFAnalysisScheduler
  22. 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.br.fpcf.properties.EscapeProperty org.opalj.br.analyses.VirtualFormalParameter

  23. sealed trait VirtualCallAggregatingEscapeAnalysisScheduler extends FPCFAnalysisScheduler
  24. class VirtualMethodAllocationFreenessAnalysis extends FPCFAnalysis

    Determines the aggregated allocation freeness for virtual methods.

  25. trait VirtualMethodAllocationFreenessAnalysisScheduler extends FPCFAnalysisScheduler
  26. class VirtualMethodPurityAnalysis extends FPCFAnalysis

    Determines the aggregated purity for virtual methods.

  27. trait VirtualMethodPurityAnalysisScheduler extends FPCFAnalysisScheduler
  28. class VirtualMethodStaticDataUsageAnalysis extends FPCFAnalysis

    Determines the aggregated static data usage for virtual methods.

  29. trait VirtualMethodStaticDataUsageAnalysisScheduler extends FPCFAnalysisScheduler
  30. class VirtualMethodThrownExceptionsAnalysis extends FPCFAnalysis

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

  31. trait VirtualMethodThrownExceptionsAnalysisScheduler extends FPCFAnalysisScheduler
  32. 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.

  33. sealed trait VirtualReturnValueFreshnessAnalysisScheduler extends FPCFAnalysisScheduler

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 BasicFPCFEagerAnalysisScheduler
  4. object EagerL0CompileTimeConstancyAnalysis extends L0CompileTimeConstancyAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
  5. object EagerL0FieldMutabilityAnalysis extends L0FieldMutabilityAnalysisScheduler with BasicFPCFEagerAnalysisScheduler

    Factory object to create instances of the FieldMutabilityAnalysis.

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

    Factory and runner for the L1ThrownExceptionsAnalysis.

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

    Starter for the type immutability analysis.

  10. object EagerUnsoundPrematurelyReadFieldsAnalysis extends UnsoundPrematurelyReadFieldsAnalysisScheduler with BasicFPCFEagerAnalysisScheduler

    Factory object to create instances of the FieldMutabilityAnalysis.

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

    Factory/executor of the thrown exceptions analysis.

  16. object EagerVirtualReturnValueFreshnessAnalysis extends VirtualReturnValueFreshnessAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
  17. object L0SelfReferenceLeakageAnalysis extends BasicFPCFEagerAnalysisScheduler
  18. object LazyClassImmutabilityAnalysis extends ClassImmutabilityAnalysisScheduler with FPCFLazyAnalysisScheduler

    Scheduler to run the immutability analysis lazily.

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

    Factory and runner for the L1ThrownExceptionsAnalysis.

  24. object LazyStaticDataUsageAnalysis extends StaticDataUsageAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  25. object LazyTypeImmutabilityAnalysis extends TypeImmutabilityAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  26. object LazyUnsoundPrematurelyReadFieldsAnalysis extends UnsoundPrematurelyReadFieldsAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  27. object LazyVirtualCallAggregatingEscapeAnalysis extends VirtualCallAggregatingEscapeAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  28. object LazyVirtualMethodAllocationFreenessAnalysis extends VirtualMethodAllocationFreenessAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  29. object LazyVirtualMethodPurityAnalysis extends VirtualMethodPurityAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  30. object LazyVirtualMethodStaticDataUsageAnalysis extends VirtualMethodStaticDataUsageAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
  31. object LazyVirtualMethodThrownExceptionsAnalysis extends VirtualMethodThrownExceptionsAnalysisScheduler with BasicFPCFLazyAnalysisScheduler

    Factory/executor of the thrown exceptions analysis.

  32. object LazyVirtualReturnValueFreshnessAnalysis extends VirtualReturnValueFreshnessAnalysisScheduler with BasicFPCFLazyAnalysisScheduler

Ungrouped