SuperAPI AI 工具集

lsp-code-analysis

编程与开发

查看项目

更新于 10-15 12:49

技能介绍

LSP Code Analysis 是一个通过语言服务器协议(LSP)提供语义化代码导航、分析与重构接口的技能,并配套提供 lsp 命令行工具。根据其说明,在大多数代码理解任务中,它应当优先于 read 或 grep 使用。

【使用前提】 资料明确要求使用该技能前必须执行两个步骤:一是运行更新脚本,确保使用的是最新版本的工具;二是运行 lsp server start <project_path> 启动 LSP 服务器,并确认项目受支持。资料强调,如果不执行这些步骤,则不允许使用该技能。

【主要能力与用途】

  1. 语义化导航:跳转到定义、查找引用、定位实现,理解代码结构而非仅匹配文本模式。
  2. 语言感知:区分变量、函数、类、类型,消除文本搜索带来的误报。
  3. 跨文件智能:追踪依赖关系,在整个代码库中安全重构,了解导入关系。
  4. 类型感知:获取精确的类型信息、签名和文档,无需阅读实现代码。
  5. 重构操作:资料提示可参考 Refactoring Guide 进行重命名、提取等安全重构操作,但具体步骤需查阅该指南。

【工具选择建议】 资料给出推荐映射:查找定义用 definition;查找用法用 reference;理解文件用 outline;查看文档或类型用 doc;重构用 LSP 命令而非 sed。仅当语义分析不适用时(例如搜索注释或字面字符串),才允许使用 read 或 grep。

【使用方式与命令】 所有命令支持 -h 或 --help。多数命令使用统一的定位语法,通过 --scope 和 --find 选项定位目标。

  • --scope:将搜索范围缩小到符号体或行范围,格式可为单行号(如 42)、行范围(如 10,20,0 表示到文件末尾)、点分符号路径(如 MyClass.my_method)。
  • --find:在所选范围内按文本模式定位目标;匹配对空白不敏感;可在模式中使用 <|> 光标标记指定精确位置,例如 user.<|>name。
  • 常用命令:outline 获取文件层级符号结构,--all 包含变量与参数;definition 跳转到定义,支持 --mode declaration 和 type_definition;reference 查找所有用法或实现,支持 --mode implementations、--context-lines 和分页参数;doc 获取文档与类型信息;search 进行全局符号搜索,支持 --project、--kinds、--max-items 等;symbol 获取某个位置的完整符号源码;server 管理后台服务器(list、start、stop、shutdown)。
  • 分页:较大结果集可使用 --pagination-id、--max-items 和 --start-index 分页,保持同一 ID 一致分页。

【典型工作流】 理解陌生代码:先 outline 获取文件结构,再用 doc 查看签名与 API 约定,接着用 definition 追踪依赖,最后用 reference 映射调用位置。 调试未知行为:先 search 定位符号定义,再 definition 验证实现细节,最后 reference 追踪调用者。 查找接口实现:先 search 限定 --kinds interface 定位接口,再 reference 配合 --mode implementations 查找所有实现。 追踪数据流:先 search 查找数据创建位置,再 reference 查找使用位置,再 doc 检查转换函数。 理解类型层级:先 outline 获取类结构,再 reference 查找基类引用(子类),再 definition 配合 --mode type_definition 查看类型定义。

【性能与最佳实践】 建议用 outline 代替读取整个文件;对嵌套结构使用符号路径而非行号;在大代码库中限制结果数量;用 doc 理解 API 而不跳转到源码;命令失败时可用 lsp locate 验证定位字符串。资料还提到针对 monorepo、前端、后端等场景有专门指南(monorepo.md、bp_frontend.md、bp_backend.md)。

【限制】 必须遵循前述前提才能使用;重构的具体操作需参考 Refactoring Guide,本文档未展开;后台管理器自动启动,手动控制为可选;关于收费、价格、平台兼容范围等信息,资料暂未提供。