Control flow analysis
|This article may need to be rewritten entirely to comply with Wikipedia's quality standards. (July 2014)|
In computer science, control flow analysis (CFA) 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). 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.[dubious ]
For many imperative programming languages, the control flow of a program is explicit in a program's source code.[dubious ] As a result, interprocedural 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.[dubious ] 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.
- Flemming Nielson, Hanne Riis Nielson & Chris Hankin (1999). Principles of Program Analysis. Springer.
- http://pages.cs.wisc.edu/~cs701-1/NOTES/3.CONTROL-FLOW-ANALYSIS.html for textbook intraprocedural CFA in imperative languages
- http://cs.au.dk/~jmi/Midtgaard-CSur-final.pdf CFA in functional programs (survey)
- http://cgi.di.uoa.gr/~smaragd/kcfa-pldi10.pdf for the relationship between CFA analysis in functional languages and points-to analysis in imperative/OOP languages