VSCode 搜索接口总扫到废弃 API 文件,是因为默认不区分接口定义与废弃存根,需用 files to include 限定 src/api/*/.ts 等真实路径,并配合 search.exclude 排除 legacy-api.ts 等废弃目录,再启用 CodeGeex 语义扫描识别 @deprecated 标记。

搜索接口时为什么总扫到废弃 API 文件
不是搜索逻辑出错,而是 VSCode 默认不区分“接口定义”和“废弃存根”,只要文件路径匹配、内容含关键词(比如 getUser),就会一并返回。尤其当你项目里混着旧版 SDK 存根、mock 实现、或第三方库的类型声明(如 node_modules/@types/xxx),这些文件本身就不该参与接口调用链分析,但默认全被搜进来了。
用 files.to.include 锁定真实接口目录
VSCode 的「在文件中替换」或「全局搜索」面板右上角有 files to include 输入框,这才是控制扫描范围的开关——它优先级高于 search.exclude,且本次有效,不污染设置。
- 只搜业务接口层:输入
src/api/**/*.ts或src/services/**/*.js,强制限定路径前缀 - 排除声明文件干扰:别用
*.ts,否则会扫到node_modules/@types/react-router/index.d.ts里的废弃路由方法 - 多目录组合:用英文逗号分隔,例如
src/api/**,src/hooks/**,src/utils/request.ts
配合 search.exclude 拦截已知废弃源
有些废弃 API 是集中维护的,比如一个 legacy-api.ts 文件,或整个 src/compat/ 目录。与其每次手动过滤,不如永久排除:
- 打开工作区设置 JSON:
Ctrl+Shift+P→Preferences: Open Workspace Settings (JSON) - 添加:
"search.exclude": { "**/legacy-api.ts": true, "**/compat/**": true, "**/mocks/**": true } - 注意:
**/compat/**匹配所有层级下的 compat 目录,而src/compat/**只匹配项目根下的
用 CodeGeex 主动识别并跳过废弃调用点
单纯文本搜索无法判断 api.getUser() 是不是已被标记为 @deprecated。这时需要语义层过滤:
- 确保已启用 CodeGeex 的上下文感知:
codegeex.context设为true - 执行
CodeGeex: Scan Deprecated APIs,它会生成带废弃状态标记的结果列表 - 点击结果中的「Go to Definition」,直接跳转到真实接口实现,而非类型声明或 mock 文件
- 若发现某接口文件里大量函数都被标 deprecated,可临时把它加进
search.exclude,避免后续误触
真正难处理的不是怎么过滤,而是那些没加 @deprecated 注释、但实际已下线的接口——它们不会被 CodeGeex 识别,也逃不出 glob 路径匹配。这种得靠人工核对文档或抓包验证,不能全交给搜索框。


















