jscpd

一款超高速的代码复制粘贴检测工具,支持200+编程语言。

安装使用

复制下面这段提示词发给你的 AI(Claude / Cursor / TRAE / Codex / WorkBuddy 等),它会自动帮你完成安装:

帮我安装这个 AI Skill:jscpd。
它的用途是:一款超高速的代码复制粘贴检测工具,支持200+编程语言。
完整的 Skill 内容见:https://321skill.com/skills/jscpd/raw/index.md
请读取该页面内容,如果是 SKILL.md 格式直接安装,如果是 README 提炼核心 prompt 后安装。

提示词包含完整的 Skill 内容链接,AI 读取后即可完成安装。你也可以 查看完整内容 确认无误。

使用示例

“帮我检查一下 `src/components/` 目录下是否有重复的代码片段。”,它会调用 jscpd 工具,快速扫描该目录下的所有源代码文件,识别出结构相同的代码块,并以清晰的报告形式(如控制台表格)展示重复的位置、行数和相似度,帮助你定位需要重构的代码。

介绍

jscpd 是一款专注于检测源代码中重复代码块的工具,旨在帮助开发者识别和清理代码中的冗余,提升代码质量和可维护性。它实现了 Rabin-Karp 算法,能够跨文件、跨格式地精准定位重复的代码片段。

使用方式非常灵活,可以通过多种包管理器(如 npm、cargo、Homebrew)安装,并通过简单的命令行即可对指定代码路径进行分析。其核心优势在于 v5 版本采用了 Rust 重写,性能相比之前的 TypeScript 版本有 24-37 倍的巨大提升,并且提供了自包含的二进制文件,无需 Node.js 环境即可运行。

它非常适合任何需要维护代码库整洁度的开发者,尤其是团队协作项目、开源项目维护者以及需要进行代码审计的工程师。通过集成到 CI/CD 流程中,可以自动化地防止重复代码进入代码库。

建议优先使用 v5 的 Rust 引擎以获得最佳性能。对于需要编程接口的场景,v4 提供了 TypeScript API,而 v5 则提供了 Rust API。注意,v5 的 Rust 引擎目前支持 223 种格式,相比 v4 的 224 种略有减少,但性能提升显著。

核心特点

核心区别在于其极致的性能:Rust 引擎版本(v5)的检测速度比之前的 TypeScript 版本快 24-37 倍,并且是自包含的二进制文件,无需 Node.js 运行时。同时,它支持跨 223 种编程和标记语言格式进行检测,覆盖面广。

注意事项

对于仅需在单一文件内或极简单项目中查找重复代码的场景,其强大的跨文件检测能力可能显得过于重量级。

常见问题

jscpd 和 cpd 命令有什么区别?

jscpd@5 和 cpd 包都包含相同的 Rust 引擎二进制文件,只是安装后暴露的命令名不同。通过 cargo install jscpd 可以同时获得两个命令。

如何集成到 CI 流程中?

jscpd 提供了 GitHub Action 和 pre-commit hook 的支持,可以方便地集成到持续集成和代码提交前检查流程中,自动拦截含有重复代码的提交。

给 AI 助手的安装指引

如果你的 AI 编程助手(Claude Code、Cursor、TRAE 等)能看到这个页面,把下面这段发给它即可自动完成安装:

请访问 https://321skill.com/skills/jscpd/raw/index.md 读取 jscpd 的原始 Skill 定义(Markdown 格式),按其中说明在我的环境里完成安装和配置。