程序分析引擎¶
程序分析引擎是莲花Lian代码分析框架的核心,负责基于GIR中间语言代码的控制流、数据流、指向性分析等语义分析。 主要有三部分组成:
-
P1-基础结构性分析:基础结构分析模块负责对GIR进行静态结构分析,如作用域层级、模块与导入关系、类型层级、控制流、定义-使用关系等。其代码主要在
basics/目录中。 -
P2-从下而上语义分析:从下而上语义分析函数级数据流和指向关系分析,将callee函数的摘要应用于caller函数,并生成新的数据流和指向关系。其代码主要包括
core/prelim_semantics.py和core/stmt_states.py。 -
P3-从上而下语义分析:从上而下语义分析模块负责从入口函数开始,逐层向下分析,生成函数级数据流和指向关系。其代码大部分实现复用了从下而上语义分析,主要包括
core/global_semantics.py和core/global_stmt_states.py。