Documentation
¶
Overview ¶
Package codeintel 轻量代码符号索引(收编自 argus internal/codegraph,v0.10.34): 工作副本上以 go/parser / go/scanner 建立符号定义表与标识符出现索引,为审查/ 问答类 agent 提供 get_symbol(定义定位)、get_references(跨文件影响面)、 get_callers(词法调用边)的数据面。v1.5 起含 JS/TS/Python 词法符号表。
边界如实声明:全部是词法级索引(Go 侧"定义/出现"两级,多语言侧正则锚定 声明/调用形态),不做类型解析级的精确调用图(那是 Greptile 全库图/LSIF 的 领域)。浅克隆工作副本 + CGO_ENABLED=0 构建约束下,纯 Go stdlib 方案是成本 与收益的平衡点。误报形态(字符串/注释内命中、动态调用)由工具描述向 agent 声明"须回文件读取核实"。全部为确定性代码,不经 LLM。
polyglot.go —— 多语言词法符号表(JS/TS/Python)。
边界如实声明:JS/TS/Python 与 Go 的 get_callers 全部是**词法级**索引 (正则锚定声明/调用形态),不做类型解析——与 Go 侧 go/scanner 同级质量, 零新增依赖、零 cgo(CGO_ENABLED=0 兼容)。误报形态(字符串/注释内命中、 动态调用)与 Go 词法索引一致,由工具描述向 agent 声明"须回 get_file 核实"。
Index ¶
- type Index
- func (x *Index) Definitions(name string) []Symbol
- func (x *Index) GoCallers(name string, limit int) []Ref
- func (x *Index) IndexedFiles() int
- func (x *Index) PolyDefinitions(name string) []PolySymbol
- func (x *Index) References(name string, limit int) []Ref
- func (x *Index) SkippedFiles() int
- func (x *Index) TouchedByLines(file string, from, to int) []Symbol
- type PolySymbol
- type Ref
- type Symbol
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Index ¶
type Index struct {
// contains filtered or unexported fields
}
Index 代码图索引(只读;多 goroutine 并发查询安全——refs 与 files 均在 NewIndex 建完后冻结,查询侧零共享可变状态)。
func (*Index) Definitions ¶
Definitions 按名查定义(大小写不敏感,词法索引惯例)。
func (*Index) GoCallers ¶
GoCallers 按名查调用形态出现位置(pkg.F( 与 F( 两种形态,定义行不计; 与 References 的差异:只收调用形态行,并注明词法级)。v0.12.0 起查建索引 期与 refs 同遍采集的 calls 表(token 对 IDENT+'(')——正则扫描、正则缓存、 子串预筛、逐行匹配四层全部删除:token 扫描无视空白(Serve (w) 命中)、 字符串/注释不产 token(假命中根除)、查询 O(1)。
func (*Index) PolyDefinitions ¶
func (x *Index) PolyDefinitions(name string) []PolySymbol
PolyDefinitions 按名查非 Go 符号(大小写不敏感;Go 侧命中优先——同名冲突 时 Go 索引是权威)。
func (*Index) References ¶
References 查标识符出现位置(精确大小写——Go 标识符大小写敏感)。 定义行自身不计入;按行去重;limit 封顶(<=0 = 50)。 走 buildRefs 预建的反向索引:查询 O(1) 查表,不再全量重扫。