Repolode
Rafaelpta

Rafaelpta/dupehound

本地运行、结果确定的重复代码检测工具,可识别被 AI 重复编写的函数,即使标识符已被改名。

Star
102
Fork
10
未关闭 Issue
3
最近提交
2个月前

这是什么?

dupehound 是一个命令行重复代码检测工具,面向大量代码由 AI 智能体编写的代码库。它使用 tree-sitter 解析每个函数,将标识符和字面量归一化后对代码结构做指纹,因此即使函数被改名,副本仍能与原函数匹配。

工具提供三个命令:scan 输出重复代码簇和仓库级别的 slop 分数;history 沿 git 历史绘制重复率曲线,定位重复开始增长的时间点;check 用于 CI 或 pre-commit,当改动与已有代码重复时失败退出,并指出可复用的原函数。整个过程完全离线,无需 API 密钥或 AI 模型,同一输入每次结果一致。

项目还提供 MCP 服务模式,让编码智能体在编辑过程中直接调用 check 和 scan 工具。支持的语言包括 TypeScript、Python、Rust、Go、Java、C#、Kotlin 等。

核心功能

  • 01通过对代码结构而非文本做指纹,识别改名后的重复副本
  • 02scan 输出重复代码簇和仓库级 slop 分数
  • 03history 沿 git 提交记录绘制重复率变化曲线
  • 04check 在 CI 和 pre-commit 中拦截新增的重复代码
  • 05完全离线、结果确定,无需 AI 或网络
  • 06以 MCP 工具形式提供 check 和 scan,供编码智能体调用

适用场景

  • 防止 AI 编码智能体重复实现仓库中已有的函数
  • 在 CI 中拦截合并请求里新增的重复代码
  • 追踪大型代码库历史中重复代码的增长趋势

快速上手

  1. 1

    使用 cargo 安装

    cargo install dupehound
  2. 2

    对目录运行重复代码扫描

    dupehound scan [path]

使用前须知

  • history 和 check 命令需要 git 位于 PATH 中。
  • --include-classes 和 --containment 参数为实验性功能,需主动开启。

收录于专题

标签

常见问题

dupehound 是什么?
本地运行、结果确定的重复代码检测工具,可识别被 AI 重复编写的函数,即使标识符已被改名。 dupehound 是一个命令行重复代码检测工具,面向大量代码由 AI 智能体编写的代码库。它使用 tree-sitter 解析每个函数,将标识符和字面量归一化后对代码结构做指纹,因此即使函数被改名,副本仍能与原函数匹配。
dupehound 可以免费使用吗?用的什么许可证?
dupehound 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
dupehound 还在维护吗?
半年内有更新。dupehound 最近一次提交是在 2026年9月21日。
dupehound 适合用来做什么?
防止 AI 编码智能体重复实现仓库中已有的函数 在 CI 中拦截合并请求里新增的重复代码 追踪大型代码库历史中重复代码的增长趋势
dupehound 怎么安装和运行?
使用 cargo 安装: cargo install dupehound 对目录运行重复代码扫描: dupehound scan [path]
在哪里获取 dupehound?
源代码和安装说明在 GitHub 上:https://github.com/Rafaelpta/dupehound

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目