Call Hierarchy快捷键没反应,主因是语言服务器未就位:需确认状态栏显示正确语言、启用对应扩展、打开含配置文件的项目目录、光标置于函数名内,并手动点击▶展开调用链。

Call Hierarchy 快捷键没反应?先确认语言服务器是否就位
按 Ctrl+Shift+H 没反应,大概率不是快捷键失效,而是 VSCode 没把当前文件当“可分析代码”处理。关键看状态栏左下角:必须显示 JavaScript、TypeScript、Python 等具体语言名,不能是 Plain Text 或 Unknown。
- 对应语言扩展必须启用:比如 Python 要同时启用
ms-python.python和ms-python.pylance;TS/JS 不能禁用内置语言服务 - 不能只打开单个
.ts文件——得打开含tsconfig.json、pyproject.toml或package.json的项目根目录 - 改完配置或装完扩展后,必须重启 VSCode,仅重载窗口不够
- 光标必须落在函数标识符内部(如
fetchData中任意字母),不能在括号、点号、引号或注释里
为什么 Call Hierarchy 只显示一层?展开图标别漏点
Ctrl+Shift+H 默认只展开直接调用者(Caller)和被调用者(Callee),深层链路要手动点击条目前的 ▶ 图标才能展开。不点就看不到 A→B→C 这样的嵌套调用,容易误判为“没更多调用”。
- 左侧是 Caller(谁调用了我),右侧是 Callee(我调用了谁)——方向别看反
- 每个条目左侧的
▶是展开它的上层调用链,例如 B 被 A 调用,点 B 左侧▶才能看到 A - 右键某行选
Focus on Caller或Focus on Callee,能临时过滤视图,避免嵌套过深时迷失 - 灰色文字表示“同文件内间接引用”,比如
const fn = myFunc; fn()—— Pylance 默认不追踪这类绑定
想看图形化调用图?Code2flow 是最轻量的可行方案
VSCode 内置的 Call Hierarchy 是树状文本结构,不是图。真要出带箭头、可缩放的调用图,Code2flow 插件是最易上手的选择:它支持 .c、.py、.js,右键 → Code2flow: Generate Flowchart 即可输出横向流程图。
- 注意:它只分析当前打开文件内的函数间调用,不解析跨文件调用;若需全项目图,得先确保语言服务器完成索引(如 Pylance 已加载全部
.py) - 对 Vue/TSX 等含 SFC 或类型声明的项目,
Code2flow可能漏掉<script setup></script>中的 import,此时建议换用dependency-cruiser+Graphviz组合 - 生成的图是流程导向(A → B 表示 A 调用 B),非严格依赖图,但对快速理解执行流向足够有效
Vue 项目依赖图失效?Volar 配置和 depcruise 排除规则是关键
Vue 项目跑 dependency-cruiser 出来的依赖图全是“死箭头”,点不进定义、hover 不出类型,基本等于白跑——根本原因是 Volar 未正确接管或 depcruise 配置没排除干扰项。
- 必须开启
volar.takeOverMode,否则@/store这类别名路径在模板里写错属性名,VSCode 根本不会标红 -
files.associations必须设为"*.vue": "vue",若误配成"*.vue": "html",depcruise 解析出的 import 路径会丢失@/→src/映射 - 安装后务必运行
npx dependency-cruiser --init生成.dependency-cruiser.js,尤其注意doNotFollow和exclude字段,否则遇到node_modules里的循环引用,depcruise 会卡死或报error: cycle detected - Vue 项目加
--extensions js,ts,jsx,tsx,vue,否则<script setup></script>里的 import 全被忽略
▶。


















