技能库 / 开发编程 / 查找语义重复函数

查找语义重复函数

审计代码库中语义层面的重复实现(功能相同或高度相似的函数与逻辑块)。

v1.0.0
作者 / 来源

github-obra

在来源站打开

安装方式

CLI 安装(推荐)

claw install oss-superpowers-lab-finding-duplicate-functions

需要安装 CLAW CLI

手动下载安装

下载 ZIP 后解压到技能目录即可安装。若在桌面客户端 WebView中直接下载出现异常,本站会改为提示页 + 原始链接,请按页内说明操作。

下载 ZIP (oss-superpowers-lab-finding-duplicate-functions-v1.0.0.zip)

触发指令

/finding-duplicate-fu

使用指南

查找「意图重复」的函数

审计代码库中 语义重复:名称或实现不同、但 干同一件事 的函数。LLM 参与的项目里常 重复造轮子;传统 jscpd 只抓 文本相似,漏掉「同意图不同写法」。

方法: 经典抽取 + LLM 按意图聚类/判重

何时使用

  • 多人(人或 LLM)长期堆代码,工具函数泛滥
  • 怀疑同一逻辑被实现多次
  • 大重构前想合并重复
  • jscpd 已扫过语法重复,要做 语义层

速查

| 阶段 | 工具 | 模型 | 产出 | |------|------|------|------| | 1 抽取 | scripts/extract-functions.sh | - | catalog.json | | 2 分类 | scripts/categorize-prompt.md | haiku | categorized.json | | 3 拆分 | scripts/prepare-category-analysis.sh | - | categories/*.json | | 4 判重 | scripts/find-duplicates-prompt.md | 每类 opus | duplicates/*.json | | 5 报告 | scripts/generate-report.sh | - | report.md | | 6 人工 | - | 人 | 合并/删重复 |

阶段说明

1 抽取:

./scripts/extract-functions.sh src/ -o catalog.json

常用选项:-o 输出、-c 上下文行数、-t 文件 glob、--include-tests(默认排除测试)。

2 分类:haiku 子代理 + categorize-prompt.md,输入 catalog.json,输出 categorized.json

3 拆分: ./scripts/prepare-category-analysis.sh categorized.json ./categories — 每类一文件;少于 3 个函数 的类可跳过深入分析。

4 判重:categories/ 下每个文件派 opus 子代理 + find-duplicates-prompt.md,输出到 duplicates/{category}.json

5 报告: ./scripts/generate-report.sh ./duplicates ./duplicates-report.md

6 人工: 高置信条目:确认 保留函数有测试 → 改调用方 → 删重复 → 跑测试。

高风险重复区

utils/helpers/、校验、错误格式化、路径处理、字符串/日期格式化、API 响应塑形等。

常见错误

抽太多内部小函数;跳过分类 直接全库判重(噪声大);用 haiku 做最终判重(易漏微妙语义);无测试就删重复