控制流分析()簡稱CFA,是一種確認程式控制流程的靜態代碼分析技術。控制流程會以控制流圖來表示。對於函數程式語言及物件導向程式設計,CFA都是指計算控制流程的演算法。
控制流分析一詞最早是由Neil D. Jones及Olin Shivers開始使用。
對於像是Scheme之類有高階函數的程式語言,不一定可以從程式中直接看出函數呼叫的目標,例如以下的程式片段
(lambda (f) (f x))
根據上述程式無法確認程序f是指什麼,此情形下的控制流分析需考慮何時會執行此程式碼,及當時的傳入值。
抽象釋義、約束滿足及型別系統都可以用來進行控制流分析。
相關條目
*控制流程圖(CFD)
*資料流分析
*
參考資料
外部連結
*[https://web.archive.org/web/20140728203154/http://pages.cs.wisc.edu/~cs701-1/NOTES/3.CONTROL-FLOW-ANALYSIS.html for textbook intraprocedural CFA in imperative languages]
*[http://janmidtgaard.dk/papers/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]
评论 (0)