VSCode原生不支持语义级重复代码检测,必须依赖插件;CodeMirror Duplicate Finder最轻量靠谱,按连续行数与相似度阈值分组高亮重复块,支持右键触发、侧边栏展示、点击跳转,并需配置minLines、similarityThreshold及includeStrings等参数适配真实场景。

本身不检测代码重复,它只做格式化。想在 VSCode 里查重复代码,必须换工具——Prettier 和重复检测是两件事,硬凑一起只会白忙。 <h3>CodeMirror Duplicate Finder 是目前最轻量靠谱的选择</h3> <p>它不依赖 ESLint 或 Prettier,专为“找连续相似块”设计,启动快、配置少、结果直观:</p>
- 默认按
duplicate-finder.minLines≥ 8 行 +duplicate-finder.similarityThreshold≥ 85% 分组高亮 - 右键 →
Find Duplicates in Workspace,结果直接列在侧边栏,点任意一处跳转全部位置 - 支持手动调低阈值:比如把
minLines改成5,similarityThreshold改成75,能抓到小函数或 Hook 里的重复逻辑 - 若重复藏在模板字符串或 JSX 里,必须开启
duplicate-finder.includeStrings: true,否则直接跳过
为什么 Find in Files(Ctrl+Shift+F)搜不到真正重复?
它只做字符串匹配,完全不理解语义:
-
axios.post('/user', data)和axios.post('/order', payload)变量名一换就搜不到 for (let i = 0; i 和 <code>for (const item of arr)结构不同,算“两个东西”- 注释位置变、缩进空格数不一致、换行符是
\n还是\r\n,都会导致匹配失败 - 被
.gitignore排除的目录(如src/utils/**)默认不扫,得临时关掉排除规则
VSCode 设置里最容易踩的坑
插件装了但没效果?先看这三处:
-
files.exclude或search.exclude里写了"**/node_modules/**": true—— 检查你真要扫的目录是否被连带屏蔽了 - 文件编码不是 UTF-8(尤其 Windows 上带 BOM 的文件),部分插件解析失败,但控制台可能只报
Invalid character,不提示根源 - 多个格式化插件冲突:
Extension 'esbenp.prettier-vscode' contributed command 'prettier.format' but it's already registered这类日志说明命令被抢注,prettier.format可能根本没走 Prettier 逻辑,得禁用其他格式化插件再试


















