40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
---
|
||
title: "LSIF"
|
||
type: concept
|
||
tags: ["LSP", "code-index", "semantic-index", "static-analysis", "pre-computed"]
|
||
sources: ["lsp-index-engineer.md"]
|
||
last_updated: 2026-04-29
|
||
---
|
||
|
||
## Definition
|
||
LSIF(Language Server Index Format)是一种标准化的预计算语义索引格式,用于存储语言服务器已分析过的代码语义数据(如符号定义、引用、继承关系等),使代码智能工具无需实时运行 LSP 服务器即可提供导航功能。
|
||
|
||
## Core Mechanism
|
||
|
||
### 用途
|
||
- **离线索引**:项目提前构建 LSIF 索引,CI/CD 阶段预先生成
|
||
- **冷启动加速**:无需等待 LSP 服务器初始化,立即提供代码导航
|
||
- **分发预索引数据**:发布 npm 包时附带已编译的 LSIF 索引
|
||
- **跨工具共享**:同一索引可为多个工具(IDE/CLI/API)共用
|
||
|
||
### 索引内容
|
||
- 符号定义位置
|
||
- 符号引用关系
|
||
- 文档结构(文件树/大纲)
|
||
- Hover 文档内容
|
||
- 类型层次信息
|
||
|
||
### 与 nav.index.jsonl 的关系
|
||
LSIF 是 nav.index.jsonl 格式的导入/导出标准。graphd 支持:
|
||
- **导出**:将内存中的语义图谱导出为 LSIF 格式
|
||
- **导入**:将预先构建的 LSIF 索引加载到内存,加速启动
|
||
|
||
## Implementation Notes
|
||
LSP/Index Engineer 将 LSIF 视为 nav.index.jsonl 格式的上游标准,通过 LSIF 实现预计算语义数据的导入/导出。
|
||
|
||
## Connections
|
||
- [[LSIF]] ← is_standard_for ← [[SemanticCodeGraph]]
|
||
- [[LSIF]] ← can_be_imported_by ← [[GraphDaemon]]
|
||
- [[LSIF]] ← is_alternative_to ← [[IncrementalGraphUpdate]]
|
||
- [[LSIF]] ← exports ← [[nav.index.jsonl]]
|