vscode 无专用“代码重复检测缓存”;所谓缓存实为 sonarlint(cacheddata + workspacestorage)、eslint(.eslintcache)等插件产物,清理需针对性操作,勿误删 cache/gpucache。

VSCode 里没有“代码重复检测缓存”这个独立缓存项
你搜到的“重复检测缓存”,大概率是误把其他功能的产物当成了专用缓存。VSCode 自身不内置代码重复(duplicate code)检测功能,也不为此生成专属缓存目录。真正可能被你感知为“重复检测缓存”的,通常来自三类插件或机制:eslint(配合eslint-plugin-duplicate等)、sonarlint、或codespell/semgrep这类外部工具集成后的临时产物。它们的缓存行为各不相同,但都**不会写入 VSCode 主缓存路径(如 Cache 或 GPUCache)**,而是分散在各自插件子目录或系统临时区。
清理 sonarlint 的重复/问题检测缓存:删 CachedData + 重置 workspaceStorage 子目录
sonarlint 是最常被当成“重复检测工具”的扩展,它会在本地缓存分析结果、语言服务器状态和项目快照。这些数据主要落在两个地方:
-
CachedData目录:存放预编译的 JS 模块、LSP 协议中间产物、规则包解压缓存 —— 这是高频变动且可安全重建的部分 -
workspaceStorage下的 GUID 子目录:每个打开过的项目对应一个文件夹,里面含分析数据库(sonarlint/analysis)、符号索引、重复代码标记快照等 —— 它体积大、按项目隔离、不随插件卸载自动清除
操作建议:
- 先彻底退出 VSCode(Windows 查任务管理器清光所有
Code.exe;macOS 用活动监视器强退Code和Code Helper) - 删
CachedData:
Windows 路径:%APPDATA%\Code\CachedData
macOS:~/Library/Application Support/Code/CachedData
Linux:~/.config/Code/CachedData - 进
workspaceStorage目录,按“修改日期”排序,删除你**已不再维护、且近期没打开过**的项目对应子目录(名字是长 GUID,大小常超 200MB) - 重启 VSCode,
sonarlint会重新下载规则包、重建索引 —— 首次分析稍慢,但后续更准
eslint 类插件的“重复检测缓存”其实只是 node_modules 和 .eslintcache
如果你用的是 eslint + eslint-plugin-duplicate 或类似规则,它本身不建额外缓存目录。所谓“残留”,实际就是:
-
.eslintcache文件(项目根目录下):ESLint 自带的增量检查缓存,记录上次 lint 的文件哈希。删它等于强制全量重检,不影响配置 -
node_modules/.cache/eslint(如有):某些自定义插件或旧版eslint-plugin-import可能写的临时缓存,非标准行为,可直接删 -
extensions目录里的插件本体:比如dbaeumer.vscode-eslint-2.4.8这类文件夹,它不存检测结果,只放插件代码 —— 不用动
所以“一键清理”只需两步:
- 在项目根目录执行:
rm .eslintcache(macOS/Linux)或del .eslintcache(Windows) - 如果用了
eslint --cache-location指定了自定义路径,去那个路径删对应文件即可
别碰 Cache 和 GPUCache——它们跟代码分析完全无关
很多人一看到“缓存”就直奔 %APPDATA%\Code\Cache,这是典型误操作。Cache 里全是 Chromium 渲染层的东西:Marketplace 页面快照、图标资源、字体加载缓存、终端渲染帧缓冲……删它对 ESLint、SonarLint、重复检测零影响,只会让下次打开扩展市场变慢、终端初始渲染卡顿几秒。同理,GPUCache 是显卡驱动级纹理缓存,跟静态分析毫无关系。
真正容易被忽略的点是:workspaceStorage 里的分析数据不会因插件禁用而消失,也不会随项目关闭自动清理。它像一块粘在硬盘上的胶布,只有手动按时间戳刮掉旧的,才能释放空间并避免误报。











