Class LocalFlowSpec<Source extends org.openrewrite.java.tree.Expression,Sink extends org.openrewrite.java.tree.J>
java.lang.Object
org.openrewrite.analysis.dataflow.LocalFlowSpec<Source,Sink>
- Direct Known Subclasses:
LocalTaintFlowSpec
@Incubating(since="7.24.0")
public abstract class LocalFlowSpec<Source extends org.openrewrite.java.tree.Expression,Sink extends org.openrewrite.java.tree.J>
extends Object
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionClass<?>Class<?>booleanisAdditionalFlowStep(DataFlowNode srcNode, DataFlowNode sinkNode) takes an existing flow-step in the graph and offers a potential next flow step.booleanisBarrier(org.openrewrite.java.tree.Expression expression, org.openrewrite.Cursor cursor) Holds if flow through `expression` is prohibited.booleanisBarrierGuard(Guard guard, boolean branch) final booleanisFlowStep(DataFlowNode srcNode, DataFlowNode sinkNode) abstract booleanisSink(DataFlowNode sinkNode) The following is always true:sink == cursor.getValue().abstract booleanisSource(DataFlowNode srcNode) The following is always true:source == cursor.getValue().
-
Field Details
-
sourceType
-
sinkType
-
-
Constructor Details
-
LocalFlowSpec
protected LocalFlowSpec()
-
-
Method Details
-
getSourceType
-
getSinkType
-
isSource
The following is always true:source == cursor.getValue().- Parameters:
srcNode- TheDataFlowNodeto check to determine if it should be considered flow-graph source.- Returns:
trueifsrcNodeshould be considered the source or root of a flow graph.
-
isSink
The following is always true:sink == cursor.getValue().- Parameters:
sinkNode- TheDataFlowNodeto check to determine if it should be considered a flow-graph sink.- Returns:
trueifsinkNodeshould be considered the sink or leaf of a flow graph.
-
isFlowStep
-
isAdditionalFlowStep
takes an existing flow-step in the graph and offers a potential next flow step. The method can then decide if the offered potential next flow step should be considered a valid next flow step in the graph. Allows for ad-hoc taint tracking by allowing for additional, non-default flow steps to be added to the flow graph. The following is always true:srcExpression == srcCursor.getValue() && sinkExpression == sinkCursor.getValue(). -
isBarrierGuard
-
isBarrier
public boolean isBarrier(org.openrewrite.java.tree.Expression expression, org.openrewrite.Cursor cursor) Holds if flow through `expression` is prohibited.
-