每个程序通过 winnow 算法提取出一系列的 fingerprint,建立倒排索引,可以从 fingerprint 查到在该程序中出现了几次,分别在什么地方。
筛掉出现在过多代码中的 fingerprint(设置一个阈值,比如 10)和出现在模板中的 fingerprint。
找到 fingerprint 匹配比较多的代码对,然后运行 RKR-GST 算法得出匹配结果。分别和模板进行匹配,然后把两者匹配的结果减去和模板匹配的结果,最后的结果再按照开始和结尾的 token 的行号转换为可以看到的结果。