控制流分析

控制流分析（）簡稱CFA，是一種確認程式控制流程的靜態代碼分析技術。控制流程會以控制流圖來表示。對於函數程式語言及物件導向程式設計，CFA都是指計算控制流程的演算法。

控制流分析一詞最早是由Neil D. Jones及Olin Shivers開始使用。

對於像是Scheme之類有高階函數的程式語言，不一定可以從程式中直接看出函數呼叫的目標，例如以下的程式片段

 (lambda (f) (f x))

根據上述程式無法確認程序f是指什麼，此情形下的控制流分析需考慮何時會執行此程式碼，及當時的傳入值。

抽象釋義、約束滿足及型別系統都可以用來進行控制流分析。

相關條目
控制流程圖（CFD）
資料流分析

參考資料

外部連結

for textbook intraprocedural CFA in imperative languages
CFA in functional programs (survey) 
for the relationship between CFA analysis in functional languages and points-to analysis in imperative/OOP languages 

Category:程序分析