CodeMirror Duplicate Finder 默认扫描测试目录,但应通过 search.exclude 排除 **/test、**/__tests__/ 等路径以聚焦业务代码,避免样板逻辑干扰真实重复检测。

CodeMirror Duplicate Finder 默认会扫描整个工作区,包括 test、__tests__、spec 这类测试目录——但它们通常含大量样板逻辑(如 mock、setup、expect),和业务代码重复无关,反而干扰判断。跳过它们不是“禁用插件”,而是让扫描聚焦在真正该被查重的源码上。
为什么测试目录里的重复不值得管
测试文件天然高重复:每个单元测试都套着 describe/it、beforeEach、jest.mock 模板;断言结构也高度一致(expect(x).toBe(y))。插件把这些全标为“重复块”,实际只是框架约定,不是代码坏味道。更关键的是:它会稀释真实业务逻辑中的重复信号——比如两个 API 调用封装函数撞车,可能被埋在几十个测试块里根本看不到。
在 settings.json 里加 search.exclude 规则
CodeMirror Duplicate Finder 依赖 VSCode 的文件发现机制,而该机制尊重 search.exclude 配置。你不需要改插件设置,只要告诉 VSCode “别把测试目录给我”:
- 打开项目根目录下的
.vscode/settings.json - 添加或合并到已有
search.exclude字段:
{
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/test": true,
"**/__tests__": true,
"**/specs": true,
"**/e2e": true,
"**/*.test.js": true,
"**/*.spec.ts": true
}
}注意:**/test 会匹配 src/test 和 packages/foo/test;**/*.test.js 则精准排除所有测试文件。VSCode 不会扫描这些路径,插件自然也看不到。
临时跳过比永久配置更快的场景
有时你只想快速扫一遍 src,不碰测试——改配置太慢。直接在全局搜索面板(Ctrl+Shift+F)底部的 files to exclude 输入框里填:
-
!**/test/** !**/__tests__/** !**/e2e/**(空格分隔) - 然后右键 →
Find Duplicates in Workspace
这个排除只对本次扫描生效,不影响其他操作,适合临时验证或 CI 环境下的单次检查。
别漏掉 .gitignore 里已排除但 VSCode 没同步的目录
很多人以为 .gitignore 里的 /test 会被自动跳过,其实不会。VSCode 的 search.exclude 和 .gitignore 完全是两套系统。如果你的项目用 nx 或 pnpm workspaces,还可能存在 libs/*/test 这种嵌套结构,得补上 **/libs/**/test 才能全覆盖。最稳妥的办法是:执行一次 Ctrl+Shift+F 搜个测试文件名(如 describe),看结果里是否还有测试路径——有,就说明排除没生效。


















