引言
现代软件系统规模庞大、结构复杂,传统的基于文本或抽象语法树(AST)的代码分析方法在面对跨文件依赖、数据流追踪、调用关系分析等任务时,往往力不从心。CodeGraph(代码图) 作为一种将代码转化为图结构的数据表示方法,近年来受到越来越多关注。它能够捕获代码中的语义关系,为程序理解、重构、安全审计以及 AI 辅助编程提供强大的基础。
什么是 CodeGraph?
CodeGraph 是将源代码中的实体(如函数、类、变量、文件等)及它们之间的关系抽象为图(Graph)的一种数据结构。图中的节点代表代码元素,边代表元素之间的语义关系(如调用、继承、数据流、引用等)。
与传统 AST 相比,CodeGraph 不仅保留语法结构,还显式地表达跨过程、跨文件的语义连接。例如:
- 函数 foo() 调用了 bar(),则图中存在一条从 foo 到 bar 的“调用”边;
- 类 Dog 继承自类 Animal,则有一条“继承”边;
- 变量 x 的值来自函数返回值,则有一条“数据流”边。
这种图表示使得许多复杂的代码分析任务可以转化为图上的查询、遍历或学习问题。
核心元素
节点类型
常见的节点类型包括:
| 函数/方法 |




