Shift+Alt+F12调用原生Find All References功能,基于语言服务器实时索引,准确显示所有静态引用位置;失效常见于语言模式错误、未整文件夹打开、配置缺失或类型声明不足。

Shift+Alt+F12 查“谁引用了我”最可靠
这不是插件功能,而是 VSCode 原生的 Find All References,基于语言服务器实时索引,覆盖 import、require、export、export default 等所有静态声明形式。它能准确告诉你哪些文件、哪一行调用了当前符号(函数、类、变量),且支持双击跳转。
常见失效场景包括:
- 状态栏显示
Plain Text或错误语言模式,需点击切换为TypeScript/JavaScript等 - 项目未通过
File → Open Folder打开,导致语言服务器没加载完整工作区 -
tsconfig.json或jsconfig.json缺失或路径别名(如@/)未在baseUrl和paths中配置 - 引用位于
node_modules但缺少类型声明(如没装@types/axios),则只显示 JS 源码而非类型定义
Ctrl+Shift+H 看函数调用树(Call Hierarchy)
Call Hierarchy 是 VSCode 1.57+ 内置功能,比 Find All References 更结构化:它同时展示当前函数的「调用者」和「被调用者」层级关系,支持逐层展开。但不是所有语言都支持——目前稳定可用的是 TypeScript、Java、C#;Python 需 Pylance 2023.8+ 且仅限 .py 文件。
使用前注意:
- 光标必须落在函数名内部,不能只在括号或空格上
- 对动态调用无效:
obj[methodName]()、eval、Function()不会被识别 - 重载函数(如 TS 多签名)可能只显示第一个声明,不反映实际调用分支
- 若面板为空,先执行
Developer: Restart TS server(TS 项目)或检查 Pylance 是否启用(Python)
右键 View Dependencies 是单向快照,别当真
VSCode 插件市场里叫 “Dependency Cruiser for VS Code” 或 “View Dependencies” 的插件,基本已停止维护。它们调用的是 dependency-cruiser CLI 的静态快照,只做单向分析:src → node_modules 或 src → src,完全不反向追溯“谁 import 了我”。更关键的是:
- 不读取项目根目录下的
.dependency-cruiser.js,所有exclude和doNotFollow规则失效 - 对
import()动态导入、require('' + name)、eval加载的模块完全不可见 - 第三方包全塞进图里,核心业务模块反而被淹没,大项目一展开就卡顿
- 节点可点击跳转,但无缩放、拖拽、悬停显示完整路径等基础交互
真正要图?用 madge 生成 HTML 依赖图
如果非得看可视化图谱,madge 比插件靠谱得多:它默认不扫 node_modules,避免噪音;循环依赖自动高亮;生成的 HTML 支持缩放、拖拽、悬停看路径。命令很简单:
npx madge --html deps.html --layout dot src/
但要注意几个硬性条件:
- ESM 项目务必加
--extensions js,ts,jsx,tsx,否则import全被忽略 - Vue 项目还得加
.vue,否则<script setup>里的导入不计入 - 图太大卡顿?加
--max-depth 2控制层级,或改用--circular只查循环依赖 - 打开
deps.html后点击节点跳转源码,需本地起服务(如 VSCode Live Server 扩展)或用file://协议配合浏览器安全策略放宽
依赖图永远只是快照,它既不反映 import() 运行时是否执行,也不包含 Webpack DefinePlugin 注入的条件逻辑——你看到的箭头,是静态解析结果,不是执行流。这点最容易被忽略。


















