Skip to content

工作区(Workspace)目录结构解析

Lian分析框架将中间产物持久化于lian_workspace目录中。文件采用基于Feather格式的.bundle(数据)与.indexing(索引)存储,支持大规模代码的高效加载。


1. frontend (编译前端)

存储源代码翻译为通用中间表示(GIR)及基础符号映射的信息。

文件名 内容说明
gir.bundle* / .indexing 全量GIR指令,包含operation、operands、stmt id及源码行号
module_symbols 模块与文件索引表,记录unit_id与物理路径、语言类型的映射
unique_symbol_ids 维护项目全局唯一的符号id分配流水状态

2. semantic_p1 (基础结构分析)

存储函数的控制流、作用域树、符号声明等基础数据。

文件名 内容说明
cfg.bundle* / .indexing 函数控制流图边信息,记录语句间的跳转关系与分支类型
scope_hierarchy.bundle* / .indexing 作用域嵌套树,记录父子作用域关系、类型及起止stmt id
scope_to_symbol_info.bundle* / .indexing 记录每个作用域内直接定义的符号及其id、声明位置
scope_to_available_scope_ids.bundle* / .indexing 各作用域向上查找符号的词法链,用于作用域寻址
stmt_id_to_scope_id 指令id到其所属作用域id的映射映射表
symbol_name_to_scope_ids.bundle* / .indexing 符号名称在项目中所有出现过的作用域id集合
symbol_name_to_decl_ids.bundle* / .indexing 符号名称在全项目中所有的声明位置集合
unit_export_symbols.indexing 模块对外导出的符号集合,用于跨文件解析import关系
defined_symbols_p1.bundle* / .indexing P1阶段每条指令定义的变量符号集合
used_symbols.bundle* / .indexing P1阶段每条指令引用的变量符号集合
defined_states_p1.bundle* / .indexing P1阶段指令定义的内存状态节点集合
stmt_status_p1.bundle* / .indexing 语句级分析状态,记录入口与出口的活跃变量位向量映射
s2space_p1.bundle* / .indexing 符号-状态空间,存储符号与初始内存状态节点的对应关系
symbol_bit_vector_p1.indexing 符号位向量管理器的索引,将定义点映射到位向量位置
call_graph_p1 初始调用图,记录词法层面可确定的函数调用关系
call_stmt_format 调用语句元数据,含被调名、参数数量及Receiver信息
method_internal_callees 函数内部包含的所有调用点的stmt id列表
method_def_use_summary 函数级符号摘要,含形参、局部变量及返回值的符号集
import_graph / import_graph_nodes 符号层级的导入关系图,描述变量/函数的跨文件来源
import_deps 文件层级的依赖图,用于规划分析任务的拓扑顺序
method_decl_format 函数声明元数据,包括所属类、起始位置、参数量等
method_id_to_name 函数id到可读全名(含类名前缀)的映射
method_to_stmt_id 函数id到其函数体内所有包含指令id的映射
method_to_parameter_id 函数id到其按序排列的形参符号id的映射
unit_to_stmt_id 文件unit_id到其中包含的所有指令id的映射
unit_to_method_id 文件unit_id到其中定义的全部函数id的映射
unit_to_variable_id 文件unit_id对应的全局/模块级变量定义位置
type_graph 类型层级图,记录类继承、接口实现等面向对象关系
entry_points 程序分析入口点列表,决定P3全局分析的起点
grouped_methods 按模块或类组织的函数分组索引,优化批量加载性能

3. semantic_p2 (局部语义分析)

存储从下而上计算的函数摘要及局部状态流关系。

文件名 内容说明
s2space_p2.indexing 指针分析精化后的符号-状态空间,包含准确的别名关系
state_flow_graph_p2.indexing 局部状态流图,描述函数内内存状态间的传递
space_summary_p2.indexing 函数行为摘要模板,记录形参/返回值间的数据流副作用
stmt_status_p2.indexing P2指令状态快照,携带状态级活跃位向量
callee_parameter_mapping_p2.indexing 调用点处实参与被调方形参的状态传递映射记录
symbol_graph.indexing 符号级依赖图,记录符号间的直接数据流演化
defined_symbols_p2 / defined_states_p2 经过过程间传播后确认的符号与状态定义集合
symbol_bit_vector_p2 / state_bit_vector_p2 P2阶段符号与状态的位向量压缩管理索引
class_to_method_id.indexing 类id到底层所有可用方法实现(含继承方法)的映射

4. semantic_p3 (全局语义分析)

存储从入口点出发、携带完整上下文实例化后的全局语义数据。

文件名 内容说明
state_flow_graph_p3.bundle* / .indexing 全局状态流图,连接跨函数节点的拓扑结构,污点分析的直接底座
s2space_p3.bundle* / .indexing 全局上下文敏感的符号-状态空间,反映实例化后的内存布局
space_summary_p3.indexing 特定调用链路下的函数行为实例摘要
stmt_status_p3.bundle* / .indexing 精确到上下文的最终指令状态,含全局数据流位向量
symbol_graph_p3.indexing 全局符号依赖图,描述跨函数边界的符号依赖
defined_symbols_p3.bundle* / .indexing 全局视角下确定的符号定义点集合
callee_parameter_mapping_p3.indexing 针对特定上下文实例化后的参数传递映射记录
state_bit_vector_p3 / symbol_bit_vector_p3 全局实例化节点对应的位向量压缩索引