CodeMirror Duplicate Finder 不支持单独配置忽略列表,只能通过 files.exclude 或 .gitignore 间接跳过;files.exclude 需用 **/ 前缀 glob 模式且值为 true,修改后须重启窗口;.gitignore 生效需 search.useIgnoreFiles 为 true 且位于 Git 根目录;注释、字符串默认不扫描,需手动开启 includeStrings。

CodeMirror Duplicate Finder 不支持整文件忽略,只能靠 .gitignore 或 files.exclude 间接跳过
VSCode 原生不提供「对重复检测插件单独配置忽略列表」的接口。CodeMirror Duplicate Finder 这类工具只读取 VSCode 的 files.exclude 和项目根目录的 .gitignore,不会识别 search.exclude、eslint.ignore 或其他插件专属配置。
也就是说:你想让它不扫某个文件,不是给它加规则,而是让 VSCode 先“看不见”那个文件。
-
files.exclude是首选——它控制资源管理器可见性,也直接影响 Duplicate Finder 的扫描范围 -
.gitignore是备选——只要启用了search.useIgnoreFiles: true(默认开启),Duplicate Finder 也会尊重它 - 别碰
search.exclude:它只影响 Ctrl+Shift+F 搜索,对重复检测完全无效
在 settings.json 中正确配置 files.exclude 跳过重复扫描
files.exclude 必须用 glob 模式,且需 **/ 前缀才能递归匹配子目录。写错格式等于没写。
例如,要跳过所有测试文件和日志,工作区 .vscode/settings.json 应包含:
{
"files.exclude": {
"**/*.test.js": true,
"**/*.spec.ts": true,
"**/*.log": true,
"**/mocks/**": true
}
}
- 值必须是
true(布尔值),不是"true"字符串 - 路径不能带 Windows 风格反斜杠
\,统一用/ - 修改后需重启 VSCode 窗口(仅重载无效),否则插件仍会加载旧文件列表
- 若已打开被排除的文件,它仍可能被缓存扫描——关掉标签页再重开更稳妥
为什么改了 .gitignore 还是被扫到?检查三个关键点
即使 .gitignore 里写了 dist/,Duplicate Finder 仍可能报出 dist 下的重复代码,原因通常是:
-
search.useIgnoreFiles被手动设为false:打开设置搜这个字段,确认它是true(默认值) -
.gitignore不在 Git 仓库根目录:插件只从git rev-parse --show-toplevel找到的路径下读取,子目录里的 .gitignore 无效 - 路径写法错误:
dist只忽略同级目录;dist/才明确表示目录;**/dist/才能覆盖嵌套结构(如packages/foo/dist)
验证是否生效:在资源管理器里看 dist/ 是否已折叠不可见。如果还能点开,说明 files.exclude 或 .gitignore 至少一个没起作用。
真正难绕开的坑:插件不扫描注释和字符串内容
CodeMirror Duplicate Finder 默认跳过注释块、模板字符串、JSX 内容——哪怕你把它们写在 files.exclude 之外,它也不会比对。
如果你怀疑重复逻辑藏在这些地方,得手动开启:
{
"duplicate-finder.includeStrings": true
}
- 该配置项必须写在用户或工作区
settings.json顶层,不是插件设置页里填的文本框 - 开启后性能下降明显,尤其大项目含大量 Markdown 或 JSX 时,建议只在排查阶段临时启用
- 即便开了,它仍无法理解语义:两个函数只是参数名不同、缩进不同、或一个用
for一个用forEach,它就认为“不重复”
工具能帮你筛掉 70% 明显复制粘贴的块,但剩下那 30% 的变体重复,终究得靠你 Ctrl+Shift+F 搜关键词,再人工比对上下文结构。这点没法偷懒。


















