abstract class IDEProblem[Fact <: IDEFact, Value <: IDEValue, Statement, Callable <: Entity] extends AnyRef
- Alphabetic
- By Inheritance
- IDEProblem
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new IDEProblem()
Abstract Value Members
- abstract def getCallEdgeFunction(callSite: Statement, callSiteFact: Fact, calleeEntry: Statement, calleeEntryFact: Fact, callee: Callable)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- abstract def getCallFlowFunction(callSite: Statement, callSiteFact: Fact, calleeEntry: Statement, callee: Callable)(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
- abstract def getCallToReturnEdgeFunction(callSite: Statement, callSiteFact: Fact, callee: Callable, returnSite: Statement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- abstract def getCallToReturnFlowFunction(callSite: Statement, callSiteFact: Fact, callee: Callable, returnSite: Statement)(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)
- abstract def getNormalEdgeFunction(source: Statement, sourceFact: Fact, target: Statement, targetFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- abstract def getNormalFlowFunction(source: Statement, sourceFact: Fact, target: Statement)(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
- abstract def getReturnEdgeFunction(calleeExit: Statement, calleeExitFact: Fact, callee: Callable, returnSite: Statement, returnSiteFact: Fact, callSite: Statement, callSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- abstract def getReturnFlowFunction(calleeExit: Statement, calleeExitFact: Fact, callee: Callable, returnSite: Statement, callSite: Statement, 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
- abstract val lattice: MeetLattice[Value]
The lattice that orders the used values
- abstract val nullFact: Fact
The null fact to use.
The null fact to use. Also used to bootstrap the analysis at the entry points.
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[Value]): EdgeFunctionResult[Value]
- 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
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def getAdditionalSeeds(stmt: Statement, callee: Callable)(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
- def getAdditionalSeedsEdgeFunction(stmt: Statement, fact: Fact, callee: Callable)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def getPrecomputedFlowFunction(callSite: Statement, callSiteFact: Fact, returnSite: Statement)(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)
- 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: Statement, callSiteFact: Fact, callee: Callable, returnSite: Statement)(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)
- 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.
- def getPrecomputedSummaryFunction(callSite: Statement, callSiteFact: Fact, returnSite: Statement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- 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 getPrecomputedSummaryFunction(callSite: Statement, callSiteFact: Fact, callee: Callable, returnSite: Statement, returnSiteFact: Fact)(implicit propertyStore: PropertyStore): EdgeFunctionResult[Value]
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
- 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.
- def hasPrecomputedFlowAndSummaryFunction(callSite: Statement, callSiteFact: Fact, callee: Callable)(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
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- 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