BaryshevRS/clone-alert

GitHub: BaryshevRS/clone-alert

一款兼容 PMD CPD 算法的高性能代码复制检测工具,专为 JS/TS 生态及主流前端框架模板设计,帮助团队在 CI 流程中自动发现并阻止重复代码。

Stars: 3 | Forks: 0

# clone-alert [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/BaryshevRS/clone-alert/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/clone-alert.svg)](https://www.npmjs.com/package/clone-alert) [![license](https://img.shields.io/npm/l/clone-alert.svg)](./LICENSE) [![node](https://img.shields.io/node/v/clone-alert.svg)](https://nodejs.org) [![types](https://img.shields.io/npm/types/clone-alert.svg)](https://www.npmjs.com/package/clone-alert) [![clone-alert](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/BaryshevRS/clone-alert/main/clone-alert-badge.json)](#duplication-badge) **clone-alert** 通过比较 **token 流** 来查找代码库中重复和复制粘贴的代码——这与 [PMD CPD](https://pmd.github.io/) (Copy‑Paste Detector) 所采用的成熟方案相同,但它是专为 JavaScript/TypeScript 生态系统和前端模板原生构建的。它可以捕获代码克隆,推行 **DRY** 原则,减少技术债务,并在出现重复代码时使构建失败。 ``` npx clone-alert --minimum-tokens 50 --files src ``` ## 为什么选择 clone-alert? - 🎯 **兼容 PMD CPD** — 忠实移植了 PMD 的匹配算法和 JavaScript/TypeScript tokenizer,并已通过 PMD 官方的黄金测试集验证。 - ⚡ **在大型 monorepo 中表现出色** — 采用结构体数组 token 核心,结合 Karp–Rabin 滚动哈希和基数排序桶。在我们的[基准测试](#benchmarks)中,它比 PMD CPD **快 10–27 倍**,同时内存消耗减少 **1.3–2.6 倍**,测试涵盖了从 Next.js 到 nx 的真实代码库。 - 🧩 **原生支持前端模板** — 不仅限于 `