解析与框架
抽取只产出节点和原始的边,解析负责把名字变成真正的连接。
抽取完成之后,Springgraph 会处理以下关系:
- 导入 → 指向的源文件(含 tsconfig 路径别名与 cargo 工作区成员)。
- 调用 → 通过导入解析与名字匹配,定位到定义。
- 继承 → 类型之间的
extends/implements关系。
Springgraph 识别 Web 框架的路由文件,产出 route 节点,并通过 references 边挂到对应的处理器类或函数上。这样查一个视图或控制器的调用方时,与之绑定的 URL 模式也会一起浮现。完整支持框架列表见 框架路由。
动态分发覆盖
Section titled “动态分发覆盖”静态解析拿不到计算出来的或间接的调用,调用流会在动态分发处断掉。Springgraph 通过若干合成器桥接这些边界,让调用流端到端连通:
- 回调 / 观察者注册
EventEmitter通道- React 重渲染(
setState→render) - JSX 子组件(
render→ 子组件) - Django ORM 描述符
每条合成边都标记为 provenance: 'heuristic',并带上连接点位置,在任何穿越它们的路径上都会就地显示。
Spring 框架解析(本仓库相对标准 codegraph 的核心增量)
Section titled “Spring 框架解析(本仓库相对标准 codegraph 的核心增量)”在通用 codegraph 的静态 AST 抽取之上,本仓库专为 Spring Boot / Spring Cloud 微服务新增了 Bean 装配与运行时派发解析。这些边让 Agent 能直接回答”这个 Controller 调用了哪个 Service 实现”、“这条 SQL 由哪个方法触发”这类架构问题,不再需要回退到 Read / Grep。下面三类能力是相对标准 codegraph 的关键补充。
Spring Bean 自动装配与构造器注入
Section titled “Spring Bean 自动装配与构造器注入”@Autowired、@Resource 字段注入,以及构造器注入(包括 Lombok @RequiredArgsConstructor 生成的隐式构造器),都会被解析为从注入点到 Bean 实现的边。接口到实现的派发按 Bean 类型与 Bean 名称匹配——这套逻辑基于 Spring 容器语义,而不是纯类型推断。
通过这些边,Agent 可以从 Controller 的字段直接走到具体的 Service 实现,不用再去猜”到底注入了哪个 bean”。
OpenFeign 客户端派发
Section titled “OpenFeign 客户端派发”@FeignClient 注解的接口被识别为远程调用入口,并连接到目标服务的 Controller。沿这条边,Agent 能从调用方直接跳到被调方的端点方法,跳过运行时 URL 推断这层模糊地带。
MyBatis XML Mapper 链路
Section titled “MyBatis XML Mapper 链路”MyBatis 的 Java Mapper 接口与同包下的 *Mapper.xml 通过 namespace + id 关联起来:接口方法 → 对应 XML 的 <select|insert|update|delete> 节点 → 再进一步把 SQL 语句本身抽取为符号节点。Agent 因此不仅能跟踪 Mapper 调用,还能直接看到该调用触发的 SQL 文本,便于排查”这次请求到底跑了什么语句”。