webstorm无一键清理全部无用代码功能,需组合使用:ctrl+alt+o删当前文件未用import(不处理变量/函数/type)、alt+enter删单个灰标声明、analyze→run inspection by name批量扫描unused local symbol等项并修复。

WebStorm 本身不提供“一键清理全部无用代码”的按钮,所谓“快速重构”其实是组合使用 Inspection 检测 + 快捷键删 import + Alt+Enter 清局部声明 + 批量扫描,漏掉的得靠人工判断。
怎么快速删掉当前文件里没用的 import
Ctrl+Alt+O(Windows/Linux)或 Cmd+Option+O(macOS)只删未使用的 ES 模块导入语句,不碰变量、函数、类型声明。它不会删 import type(除非 tsconfig 中配置了 "importsNotUsedAsValues": "error"),也不会处理动态 import(如 import(`./${name}.ts`))。
- 删完发现还有灰标变量?不是功能失效,是这个快捷键本来就不管那些
- 如果 import 没被删干净,先执行
File | Invalidate Caches and Restart…,勾选 “Clear file system cache and Local history” - JS 文件里用了
require()?Ctrl+Alt+O完全无视,得手动删
怎么安全删掉未使用的变量、函数、type
WebStorm 把未引用的局部变量、函数声明、type 或 interface 标为灰色,悬停提示 unused local variable。光标停在名字上,按 Alt+Enter → 选 Remove unused declaration 即可删除。
- 支持
const/let/var、function声明、type和interface - 若被
typeof、keyof、泛型参数或 JSDoc(如@type {MyType})引用,可能不会被标记为未使用 -
interface被其他类型extends或&时,WebStorm 有时会误判为“未使用”,必须人工核对
如何批量扫整个项目里的死代码
菜单走 Analyze → Run Inspection by Name,输入 unused,从列表中选:
-
Unused local symbol:删未用的局部变量、常量 -
Unused function:删未调用的函数声明(不含箭头函数或导出函数) -
Unused type declaration:删未被引用的type或interface
指定范围为 Entire project,点 OK 后结果以列表呈现,可多选 → 右键 Apply fix 一键批量删。但删完务必立刻跑一次类型检查(Ctrl+Shift+F10)——出现 Cannot find name 'MyType' 不是工具错了,是你代码里还藏着没被扫描到的引用。
为什么有些“明显没用”的代码就是不被标灰
WebStorm 的死代码检测不是靠“看起来没用”,而是靠静态分析确认“不可达”或“从未被引用”。常见漏标场景:
- 动态属性访问:
obj[variableName]中的variableName是字符串拼接或变量,无法追踪实际 key - 全局污染:
window.xxx = fn或this.xxx = fn暴露的函数,默认不认为被外部引用 - 装饰器或框架元数据:React 组件名、Vue
setup()返回值、Angular@Component类,若未被框架扫描逻辑覆盖,可能被误判 - ESLint 干扰:如果启用了 ESLint 且规则(如
no-unused-vars)与 WebStorm 内置检查冲突,后者可能退让——可临时关掉 ESLint(Settings | Languages & Frameworks | JavaScript | Code Quality Tools | ESLint)验证是否是它导致的漏标
最麻烦的是跨作用域动态引用和运行时注入,这类问题 WebStorm 基本不处理,得靠你心里有数。











