控制流分析

控制流分析
控制流分析(Control flow analysis)简称CFA,是一种确认程序控制流程的静态代码分析技术。控制流程会以控制流图来表示。对于函数编程语言及面向对象程式设计,CFA都是指计算控制流程的算法。控制流分析一词最早是由Neil D. Jones及Olin Shivers开始使用。抽象释义、约束补偿及型别系统都可以用来进行控制流分析。

简介

程序代码的静态分析就是通过检查程序的源代码来推测程序运行时的行为信息。静态分析出了能够检查指定程序中存在的错误和安全漏洞以外,同时还能够将其思想加入到代码编译器中,用于程序的优化。那么以何种方式才能够将静态分析用于优化,最关键的技术点就是流分析技术。流分析技术是比较传统的编译器优化技术,流分析能够保证程序内容真实性的状态下,确定一个指定程序节点的相对路径的事实。流分析技术从大体上分类,分为控制流分析和数据流分析。
控制流分析是一类用于分析程序控制流结构的静态分析技术,目的在于生成程序的控制流图,在编译器设计、程序分析、程序理解等领域都有重要应用。对程序的控制流分析是对源程序或者源程序的中间表示形式的直接操作,形成控制流图;数据流分析是在控制流分析后得出的控制流图的基础上,将程序中的包含数据的变量沿着控制流图的路径,进行赋值和传递,直至程序完成,变量回收或者未被回收。那么从逻辑关系而言,控制流分析是先于数据流分析的,控制流分析对数据流分析有着先导性和支持性的作用。

类别