Control flow analysis
In computer science, control flow analysis is a static code analysis technique for determining the control flow of a program. The control flow is expressed as a control flow graph (CFG). The term "control flow analysis" was introduced independently by Neil D. Jones and Olin Shivers. For both functional programming languages and object-oriented programming languages, the term CFA, and elaborations such as k-CFA, refer to specific algorithms that compute control flow.
For many imperative programming languages, the control flow of a program is explicit in a program's source code. As a result, control-flow analysis implicitly usually refers to a static analysis technique for determining the receiver(s) of function or method calls in computer programs written in a higher-order programming language. For example, in a programming language with higher-order functions like Scheme, the target of a function call may not be explicit: in the isolated expression
(lambda (f) (f x))
it is unclear to which procedure
f may refer. To determine the possible targets, a control-flow analysis must consider where this expression could be invoked, and what argument it may receive.
- Neil D. Jones (1981), "Flow analysis of lambda expressions", Automata, Languages and Programming: 114–128, doi:10.1007/3-540-10843-2_10
- Shivers, Olin (1988), "Control-flow analysis in Scheme", Proceedings of the ACM SIGPLAN'88 Conference on Programming Language Design and Implementation (PLDI), SIGPLAN Notices, Vol.23, No.7: 164–174, doi:10.1145/53990.54007
- Flemming Nielson, Hanne Riis Nielson & Chris Hankin (1999). Principles of Program Analysis. Springer.