复制粘贴一时爽,半年后没人敢改!查重工具集体翻车?AST 和向量模型互相打脸,6 份重复代码藏了几个月没人发现
作者把两种查重法跑遍自家 TypeScript 仓库,静态指纹揪出 118 组跨文件重复,但两种方法分歧巨大,真相全藏在互相打脸的案例里。
大白话作者团队用两套工具查重复代码:一套是静态的,把函数里的变量名、字符串、数字全抹掉,只比剩下的骨架;另一套是让本地嵌入模型理解每个函数在干嘛,再比向量相似度。结果两套工具经常吵起来。静态那套能精准抓出「只改了名字和 true/false」的复制粘贴,但会把长得一样、意思完全不同的类型守卫误判成重复;嵌入模型反过来,逻辑一样但写法不同的两个求和函数它可能认不出来。作者把 14 个典型样本和脚本开源了,跑起来要 Bun,向量那部分还要本地 Ollama。
对你意味着如果你在维护有一定年头的代码库,重复逻辑往往就是 bug 温床;这篇给了两套互补思路和能直接跑的样本,值得抄作业。
打开巨象雷达,看今天全部 AI 动态