Package edu.umd.cs.findbugs.ba
Class SimplePathEnumerator
java.lang.Object
edu.umd.cs.findbugs.ba.SimplePathEnumerator
- All Implemented Interfaces:
DFSEdgeTypes
,EdgeTypes
,DFSEdgeTypes
Object to enumerate (some subset of) the simple paths in a CFG. A simple path is a path from entry to exit, ignoring backedges and unhandled exceptions.
FIXME: instead of storing the simple paths, should invoke a callback as each simple path is produced. That would save memory.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CFG
private static final boolean
static final int
Default number of steps to be performed in path enumeration.private final DepthFirstSearch
private final int
private final int
private int
Fields inherited from interface edu.umd.cs.findbugs.graph.DFSEdgeTypes
BACK_EDGE, CROSS_EDGE, FORWARD_EDGE, TREE_EDGE, UNKNOWN_EDGE
Fields inherited from interface edu.umd.cs.findbugs.ba.EdgeTypes
BACKEDGE_SOURCE_EDGE, BACKEDGE_TARGET_EDGE, CHECKED_EXCEPTIONS_FLAG, EXIT_EDGE, EXPLICIT_EXCEPTIONS_FLAG, FALL_THROUGH_EDGE, GOTO_EDGE, HANDLED_EXCEPTION_EDGE, IFCMP_EDGE, JSR_EDGE, RET_EDGE, RETURN_EDGE, START_EDGE, SWITCH_DEFAULT_EDGE, SWITCH_EDGE, UNHANDLED_EXCEPTION_EDGE, UNKNOWN_EDGE
-
Constructor Summary
ConstructorsConstructorDescriptionSimplePathEnumerator
(CFG cfg, int maxPaths) Constructor; max work is set to DEFAULT_MAX_WORK.SimplePathEnumerator
(CFG cfg, int maxPaths, int maxWork) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionEnumerate the simple paths.iterator()
Iterate over simple paths.private void
work
(LinkedList<Edge> partialPath)
-
Field Details
-
cfg
-
dfs
-
maxPaths
private final int maxPaths -
maxWork
private final int maxWork -
work
private int work -
pathList
-
DEBUG
private static final boolean DEBUG -
DEFAULT_MAX_WORK
public static final int DEFAULT_MAX_WORKDefault number of steps to be performed in path enumeration.- See Also:
-
-
Constructor Details
-
SimplePathEnumerator
Constructor.- Parameters:
cfg
- the control flow graph to enumerate simple paths ofmaxPaths
- maximum number of simple paths to findmaxWork
- maximum number of steps to be performed in the path enumeration (to handle exponential blowup of search space)
-
SimplePathEnumerator
Constructor; max work is set to DEFAULT_MAX_WORK.- Parameters:
cfg
- the control flow graph to enumerate simple paths ofmaxPaths
- maximum number of simple paths to find
-
-
Method Details
-
enumerate
Enumerate the simple paths.- Returns:
- this object
-
iterator
Iterate over simple paths. -
work
-