VSCode原生不支持检测配置文件中的重复代码块,需借助插件或人工排查;CodeMirror Duplicate Finder需调参才能扫描JSON/JS配置,但仅做文本比对;高效人工法包括grep定位、多光标排序、diff工具比对及全局变量串联。

VSCode 原生不支持检测配置文件(如 package.json、tsconfig.json、webpack.config.js)中嵌入的重复代码块——它连普通源码的语义重复都识别不了,更别说 JSON 或 JS 配置里的结构雷同了。这类重复往往藏在字段值、数组项、插件配置或 loader 规则里,得靠组合策略手动揪出来。
为什么 Find in Files 对配置文件重复完全失效
Ctrl+Shift+F 只做字面匹配,而配置文件中的“重复”常表现为:
- 多个
rules数组里写了几乎一样的test正则和use配置,但一个用babel-loader,另一个拼成babel__loader(变量名差异) -
package.json的scripts里,"build:dev"和"build:staging"仅差一个环境变量名,其余命令完全一致 -
tsconfig.json中两处"include"数组,路径前缀相同("src/features/**")、后缀不同("a"/"b"),但工具根本不会归一化路径模式
这些情况,字符串搜索要么漏掉,要么误报——因为换行、缩进、引号风格、注释位置全会影响匹配结果。
CodeMirror Duplicate Finder 能扫配置文件吗
能,但默认不生效,必须手动调参并确认扫描范围:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 确保
files.exclude或.gitignore没排除目标配置目录(例如"**/config/**"被忽略了,那webpack.config.js就扫不到) - 把
duplicate-finder.minLines改成3(默认8,而大多数配置项就占 4–6 行) - 把
duplicate-finder.similarityThreshold降到70(JSON 字段顺序、空格、引号类型稍有不同,相似度就暴跌) - 如果重复藏在 JS 配置文件的模板字符串或注释里(比如动态生成的
resolve.alias),需开启duplicate-finder.includeStrings: true
触发后,它会把相似的 JSON 对象块或 JS 对象字面量高亮分组,但注意:它不解析 JSON 结构,只比对文本行——所以 {"a":1,"b":2} 和 {"b": 2, "a": 1} 会被当成完全不同。
JSON/JS 配置文件重复的高效人工排查法
与其等插件猜,不如直接锁定结构特征,再肉眼比对:
- 在项目根目录执行
grep -r "test.*\.tsx" --include="*.js" --include="*.json" .,快速找出所有含 TSX 匹配规则的配置文件,集中打开比对rules字段 - 用 Ctrl+Shift+F 搜共性键名:
"loader"、"plugins"、"resolutions",再看上下文是否出现多段高度相似的数组 - 把疑似重复块复制进 diffchecker.com,选 “Ignore whitespace” 和 “Ignore comments”,一眼看出差异点在哪
- 对
package.json的scripts,用 VSCode 多光标(Alt+Click)选中所有build:开头的键名,再按 Ctrl+Shift+P → “Sort Lines Ascending”,让相似命令排在一起,方便横向扫视
真正难处理的是“逻辑重复但结构打散”的情况:比如一个环境变量在 .env 里定义,在 webpack.config.js 里读取,在 tsconfig.json 的 compilerOptions.paths 中又硬编码了一次——这种跨文件、跨格式的重复,任何插件都看不到,只能靠你记住关键变量名,用全局搜 APP_ENV 或 API_BASE_URL 串起来。










