Skip to content

程序分析引擎

程序分析引擎是莲花Lian代码分析框架的核心,负责基于GIR中间语言代码的控制流、数据流、指向性分析等语义分析。 主要有三部分组成:

  • P1-基础结构性分析:基础结构分析模块负责对GIR进行静态结构分析,如作用域层级、模块与导入关系、类型层级、控制流、定义-使用关系等。其代码主要在basics/目录中。

  • P2-从下而上语义分析:从下而上语义分析函数级数据流和指向关系分析,将callee函数的摘要应用于caller函数,并生成新的数据流和指向关系。其代码主要包括core/prelim_semantics.pycore/stmt_states.py

  • P3-从上而下语义分析:从上而下语义分析模块负责从入口函数开始,逐层向下分析,生成函数级数据流和指向关系。其代码大部分实现复用了从下而上语义分析,主要包括core/global_semantics.pycore/global_stmt_states.py