Skip to content
FunCoding

Search

Search docs, Skills and MCP

使用 LSP 查询代码

先定位符号,再查询定义、引用、调用层级、诊断与代码动作。

This page has not been translated into English yet. The original Chinese version is shown below.

配置并启用语言服务后,Qwen 通过统一 lsp 工具查询代码。返回质量取决于服务器能力、索引和项目编译配置。

先找准确位置

workspaceSymbol 用 query 搜索工作区,可加 limit;documentSymbol 返回某 filePath 中的符号。先用它们定位,再执行依赖位置的查询,不猜行列。

操作必需位置或输入
goToDefinitionfilePath、line、character
findReferences同上,可选 includeDeclaration
goToImplementationfilePath、line、character
hoverfilePath、line、character
prepareCallHierarchyfilePath、line、character

Qwen 工具接口的 line、character 都从 1 开始,不应直接传其他客户端的零基位置。

调用层级

先 prepareCallHierarchy 取得 callHierarchyItem,再传给 incomingCalls 或 outgoingCalls。前者查谁调用当前函数,后者查当前函数调用谁。返回对象是后续请求的输入,不用仅凭名称重新拼装。

诊断与动作

diagnostics 需要 filePath;workspaceDiagnostics 可用 limit 控制数量。诊断为空可能是尚未索引、文件未保存或服务没连上,应结合 /lsp 状态判断。

codeActions 使用起始 line/character,可带 endLine/endCharacter,省略终点时使用起点;还可带 diagnostics 与 codeActionKinds。常用动作类型:

  • quickfix:修复诊断。
  • refactor、refactor.extract、refactor.inline:重构或抽取/内联。
  • source、source.organizeImports、source.fixAll:源码级整理和可自动修复项。

获得代码动作列表不等于动作已应用;应检查后续实际修改和验证输出。

没有结果时

先保存文件并确认语言后缀映射,再等待索引。clangd 需要真实编译数据库或 flags;缺少 include 路径不能只靠增大超时补救。

同一文件类型可以配置多个服务,但每次操作只使用其中一个,先返回结果者胜出。不要假定结果是多个服务器诊断的完整并集。