Enum ControlFlowImprecision
What a ControlFlowGraph could not describe exactly, so that whoever asks it a question knows which answers to trust.
[Flags]
public enum ControlFlowImprecision
Fields
None = 0Nothing is approximated.
Resumption = 4The procedure uses
ResumeorResume Next, which continue at the statement that raised the error: which one is known only at run time. The graph has no edge for it, so a path that only exists through one is not in it.Subroutines = 2The procedure uses
GoSuborOn…GoSub, and aReturngoes back to the instruction after any of them: which one is known only at run time. The graph has the edges that are possible, and some that are not.UnresolvedJump = 1A jump lands nowhere: the label it names is not defined, which is a compile error. The graph has no edge for it.
Remarks
A graph with no imprecision has every edge control can take, and no edge it cannot (a condition that is not a literal can go either way). A graph that has some is still an answer: it says what it approximates, and an analysis that states a fact decides whether the approximation can make it a lie.