codemirror duplicate finder 不触发 vscode 诊断通道,仅以浅蓝背景高亮连续重复代码块、侧边栏分组展示并支持跳转,无波浪线、灯泡、problems 面板条目及 severity 标识。

VSCode 原生不显示代码重复的波浪线或告警,所谓“重复检测提示”全靠插件生成,且默认不触发任何编辑器级报错——你看到的只是侧边栏分组列表或高亮块,不是错误/警告。
CodeMirror Duplicate Finder 的提示长什么样
它不走 VSCode 的诊断(diagnostics)通道,所以不会在行首出波浪线、不出灯泡、不进 Problems 面板。它的“提示”是视觉+导航型的:
- 重复块在编辑器中被浅蓝色背景高亮(可自定义),但仅限连续行块,单行或断开的逻辑不会标
- 右侧边栏弹出
Duplicate Finder面板,按相似度分组列出所有匹配位置 - 点击任意一个条目,光标跳转到对应文件/行;点组标题可展开全部位置
- 没有 severity 标识(error/warn/info),也不影响保存或格式化流程
为什么 Problems 面板里看不到重复告警
因为 CodeMirror Duplicate Finder 从不调用 VSCode 的 vscode.languages.diagnostics API,它本质上是个“增强型查找工具”,不是 Linter。以下情况你永远等不到波浪线:
-
duplicate-finder.minLines设为 5,但某处重复只有 3 行(比如两个catch (err) { console.error(err); }) - 两段逻辑变量名不同(
res.datavsresponse.payload),哪怕结构一模一样 - 重复藏在模板字符串里,而
duplicate-finder.includeStrings仍为false(默认值) - 文件被
files.exclude或.gitignore屏蔽,插件根本没读它
想让重复变成真告警?得换工具链
如果你真需要波浪线、Problems 面板条目、保存拦截这类“强提示”,CodeMirror Duplicate Finder 不胜任。可行路径只有两条:
- 用
SonarLint并启用规则javascript:S1192(字符串字面量重复)或typescript:S1192,但它只检字符串,不检逻辑块 - 用命令行工具
simian扫描后,配合vscode-problem-matcher解析输出——需写tasks.json,且结果是只读的 Problems 条目,无法一键跳转到所有副本 - CSS 中的重复属性(如写了两遍
color: red)例外:它走原生 CSS 验证器,可在设置里设"css.validate": true并把css.duplicateProperties设为error,这时才会有红色波浪线
真正容易被忽略的是:插件高亮的“重复”,未必该合并;而 Problems 面板里没出现的,可能才是最危险的变体重复——比如一处用 axios,另一处用 fetch 封装了同样参数校验和错误 toast,这种语义重复,任何静态工具都看不到,只能靠你搜 toast.error 或 handleError 后人工比对。











