abstract class JavaIFDSProblem[Fact <: IDEFact] extends IFDSProblem[Fact, JavaStatement, Method]
Specialized IFDS problem for Java programs based on an IDE problem.
- Source
- JavaIFDSProblem.scala
- Alphabetic
- By Inheritance
- JavaIFDSProblem
- IFDSProblem
- IDEProblem
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new JavaIFDSProblem()
Abstract Value Members
- abstract def getCallFlowFunction(callSite: JavaStatement, callSiteFact: Fact, calleeEntry: JavaStatement, callee: Method)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function for a call flow.
Generate a flow function for a call flow.
- callSite
where the call flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- calleeEntry
where the callable starts (the statement which the callable is started with)
- callee
the callable that is called
- Definition Classes
- IDEProblem
- abstract def getCallToReturnFlowFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method, returnSite: JavaStatement)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function for a call-to-return flow.
Generate a flow function for a call-to-return flow.
- callSite
where the call-to-return flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- callee
the callable this flow is about
- returnSite
where the call-to-return flow ends (e.g. the next statement after the call)
- Definition Classes
- IDEProblem
- abstract def getNormalFlowFunction(source: JavaStatement, sourceFact: Fact, target: JavaStatement)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function for a normal flow.
Generate a flow function for a normal flow.
- source
where the normal flow starts
- sourceFact
the fact the flow starts with
- target
where the normal flow ends
- Definition Classes
- IDEProblem
- abstract def getReturnFlowFunction(calleeExit: JavaStatement, calleeExitFact: Fact, callee: Method, returnSite: JavaStatement, callSite: JavaStatement, callSiteFact: Fact)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function for a return flow.
Generate a flow function for a return flow.
- calleeExit
where the return flow starts (the statement the callable is exited with)
- calleeExitFact
the fact the flow starts with
- callee
the callable that is returned from
- returnSite
where the return flow ends (e.g. the next statement after the call in the callers code)
- callSite
corresponding to the return flow
- callSiteFact
corresponding to the return flow
- Definition Classes
- IDEProblem
- abstract val nullFact: Fact
The null fact to use.
The null fact to use. Also used to bootstrap the analysis at the entry points.
- Definition Classes
- IDEProblem
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- implicit def edgeFunctionToFinalEdgeFunction(edgeFunction: EdgeFunction[IFDSValue]): EdgeFunctionResult[IFDSValue]
- Definition Classes
- IDEProblem
- val emptyFlowFunction: EmptyFlowFunction[Fact]
Empty flow function that can be used when implementing problems
Empty flow function that can be used when implementing problems
- Attributes
- protected
- Definition Classes
- IDEProblem
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def getAdditionalSeeds(stmt: JavaStatement, callee: Method)(implicit propertyStore: PropertyStore): Set[Fact]
Add additional facts that the analysis should be seeded with.
Add additional facts that the analysis should be seeded with. Traditionally, IDE starts with the null fact at the start statements of the callable. E.g. additional seeds can be used for adding facts about the parameters of the analyzed callable.
- stmt
the start statement
- callee
the analyzed callable
- Definition Classes
- IDEProblem
- def getAdditionalSeedsEdgeFunction(stmt: JavaStatement, fact: Fact, callee: Method)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate an edge function for a flow starting with an additional seeds.
Generate an edge function for a flow starting with an additional seeds.
- stmt
the start statement
- fact
the start fact
- callee
the analyzed callable
- Definition Classes
- IDEProblem
- final def getCallEdgeFunction(callSite: JavaStatement, callSiteFact: Fact, calleeEntry: JavaStatement, calleeEntryFact: Fact, callee: Method)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate an edge function for a call flow.
Generate an edge function for a call flow.
- callSite
where the call flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- calleeEntry
where the callable starts (the statement which the callable is started with)
- calleeEntryFact
the fact the flow ends with
- callee
the callable that is called
- Definition Classes
- IFDSProblem → IDEProblem
- final def getCallToReturnEdgeFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method, returnSite: JavaStatement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate an edge function for a call-to-return flow.
Generate an edge function for a call-to-return flow.
- callSite
where the call-to-return flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- callee
the callable this flow is about
- returnSite
where the call-to-return flow ends (e.g. the next statement after the call)
- returnSiteFact
the fact the flow ends with
- Definition Classes
- IFDSProblem → IDEProblem
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def getNormalEdgeFunction(source: JavaStatement, sourceFact: Fact, target: JavaStatement, targetFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate an edge function for a normal flow.
Generate an edge function for a normal flow.
- source
where the normal flow starts
- sourceFact
the fact the flow starts with
- target
where the normal flow ends
- targetFact
the fact the flow ends with
- Definition Classes
- IFDSProblem → IDEProblem
- def getPrecomputedFlowFunction(callSite: JavaStatement, callSiteFact: Fact, returnSite: JavaStatement)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function that yields the facts that are valid when going through the unknown callable and reaching the return site.
Generate a flow function that yields the facts that are valid when going through the unknown callable and reaching the return site. Similar to a call-to-return flow (cfg. getCallToReturnFlowFunction) but capturing the effects that flow through the possible callables.
- callSite
where the flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- returnSite
where the flow ends (e.g. the next statement after the call)
- Definition Classes
- IDEProblem
- Note
In this type of precomputed flow the callable is unknown. Thus, the call-to-return flow is not applied and needs to be integrated into this flow.
- def getPrecomputedFlowFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method, returnSite: JavaStatement)(implicit propertyStore: PropertyStore): FlowFunction[Fact]
Generate a flow function that yields the facts that are valid when going through the callable and reaching the return site.
Generate a flow function that yields the facts that are valid when going through the callable and reaching the return site. Similar to a call-to-return flow (cfg. getCallToReturnFlowFunction) but capturing the effects that flow through the callable.
- callSite
where the flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- callee
the callable this flow is about
- returnSite
where the flow ends (e.g. the next statement after the call)
- Definition Classes
- IDEProblem
- Note
In this type of precomputed flow the callable is known. Thus, the call-to-return flow can be applied normally and does not need to be integrated in this flow.
- final def getPrecomputedSummaryFunction(callSite: JavaStatement, callSiteFact: Fact, returnSite: JavaStatement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate a summary function from a call-site node up to a return-site node (just what summary functions are in the foundation paper, but in one step and for all callables that are possible call targets).
Generate a summary function from a call-site node up to a return-site node (just what summary functions are in the foundation paper, but in one step and for all callables that are possible call targets).
- callSite
where the flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- returnSite
where the flow ends (e.g. the next statement after the call)
- returnSiteFact
the fact the flow ends with
- Definition Classes
- IFDSProblem → IDEProblem
- Note
In this type of precomputed flow the callable is unknown. Thus, the call-to-return flow is not applied and needs to be integrated into this flow.
- final def getPrecomputedSummaryFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method, returnSite: JavaStatement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate a summary function from a call-site node up to a return-site node (just what summary functions are in the foundation paper, but in one step).
Generate a summary function from a call-site node up to a return-site node (just what summary functions are in the foundation paper, but in one step).
- callSite
where the flow starts (always a call statement)
- callSiteFact
the fact the flow starts with
- callee
the callable the flow is about
- returnSite
where the flow ends (e.g. the next statement after the call)
- returnSiteFact
the fact the flow ends with
- Definition Classes
- IFDSProblem → IDEProblem
- Note
In this type of precomputed flow the callable is known. Thus, the call-to-return flow can be applied normally and does not need to be integrated in this flow.
- final def getReturnEdgeFunction(calleeExit: JavaStatement, calleeExitFact: Fact, callee: Method, returnSite: JavaStatement, returnSiteFact: Fact, callSite: JavaStatement, callSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[IFDSValue]
Generate an edge function for a return flow.
Generate an edge function for a return flow.
- calleeExit
where the return flow starts (the statement the callable is exited with)
- calleeExitFact
the fact the flow starts with
- callee
the callable that is returned from
- returnSite
where the return flow ends (e.g. the next statement after the call in the callers code)
- returnSiteFact
the fact the flow ends with
- callSite
corresponding to the return flow
- callSiteFact
corresponding to the return flow
- Definition Classes
- IFDSProblem → IDEProblem
- final def hasPrecomputedFlowAndSummaryFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method)(implicit propertyStore: PropertyStore): Boolean
Whether precomputed flow and summary functions for a
(callSite, callSiteFact, callee)combination exist (resp.Whether precomputed flow and summary functions for a
(callSite, callSiteFact, callee)combination exist (resp. can be generated).- callSite
where the flow starts
- callSiteFact
the fact the flow starts with
- callee
the callable this flow is about
- Definition Classes
- IFDSProblem → IDEProblem
- def hasPrecomputedFlowFunction(callSite: JavaStatement, callSiteFact: Fact, callee: Method)(implicit propertyStore: PropertyStore): Boolean
Whether precomputed flow functions for a
(callSite, callSiteFact, callee)combination exist (resp.Whether precomputed flow functions for a
(callSite, callSiteFact, callee)combination exist (resp. can be generated).- callSite
where the flow starts
- callSiteFact
the fact the flow starts with
- callee
the callable this flow is about
- Definition Classes
- IFDSProblem
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final val lattice: MeetLattice[IFDSValue]
The lattice that orders the used values
The lattice that orders the used values
- Definition Classes
- IFDSProblem → IDEProblem
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
- Deprecated