VSCode无提交前自动重复检测功能,需先用插件扫描再人工判断;因重复检测跨文件、无标准退出码,无法集成到pre-commit hook;CodeMirror Duplicate Finder需手动配置阈值并配合diffchecker补漏,最终决策依赖开发者对业务逻辑的理解。

为什么 pre-commit 里加不了重复检测
Git hooks(比如 pre-commit)适合运行 ESLint、Prettier 这类有明确退出码、可批量处理单文件的工具;但重复检测是跨文件、需上下文比对、结果非布尔值(而是若干分组块)的操作。目前没有插件能输出符合 lint-staged 接口规范的重复报告,强行塞进 hook 会失败或静默跳过。
CodeMirror Duplicate Finder 怎么配合提交流程用
它不能自动阻断提交,但能极大压缩你肉眼审查的范围。关键在于把它变成「提交前必做动作」:
- 确保
duplicate-finder.minLines设为5(小钩子/校验逻辑常不到 8 行) - 把
duplicate-finder.similarityThreshold调到75(变量名一换就归零,太严没用) - 检查
.gitignore是否意外排除了待查目录(如src/lib/**被关了,那扫不到) - 右键 →
Find Duplicates in Workspace,等侧边栏弹出分组后,逐组点开看——重点关注刚改过的文件
Ctrl+Shift+F 搜关键词 + diffchecker.com 是补漏核心
插件漏掉的“变体重复”,靠这个组合最实在:
- 搜共性标识符:
axios.post、localStorage.setItem、if (!data)、甚至自定义工具函数名如validateEmail - 把搜索结果中疑似重复的几段代码,分别复制进 diffchecker.com 做三向比对
- 特别注意是否只差一行日志、一个默认值、或 if 分支拆开/合并写法——这些正是人工判断的临界点


















