kucherenko/jscpd
Copy/paste detector for source code. 220+ languages, Rust engine, SARIF/HTML/badge reporters, GitHub Action, MCP server for AI agents.
解决的问题
jscpd 是一款高性能工具,旨在检测大型代码库中的重复代码、无效代码和复杂度热点。它通过识别冗余逻辑、未使用的代码以及难以维护或容易出错的过度复杂文件,帮助开发者维护代码健康。
工作原理
该工具使用基于 Rust 的引擎,根据 224 多种编程语言的特定语法规则对源代码进行标记化。然后,它采用滚动 Rabin-Karp 哈希算法来识别重复序列。除了简单的文本匹配外,它还支持高级检测类型,包括重命名标识符 (Type-2)、带有微小编辑的近乎克隆 (Type-3),以及使用代码嵌入模型来查找功能等效但写法不同的代码的实验性语义克隆检测。
适用对象
它旨在供软件工程师、DevOps 团队和 CI/CD 流水线使用,以强制执行代码质量标准、跟踪技术债务,或防止单体仓库和大型项目中冗余代码的积累。
亮点
- 支持 224 多种语言格式,具有语言感知标记化功能。
- 包含一个 AI 就绪的 MCP 服务器和一个用于基于 LLM 的分析工作流的令牌高效报告器。
- 跟踪 Git 历史记录中的代码健康状况和重复趋势,以防止回归。
- 检测 JavaScript、TypeScript 和 Python 中的无效代码(未使用的文件、导出和导入)。
- 提供用于 Neovim、Helix 和 JetBrains 等 IDE 中实时诊断的语言服务器 (LSP)。
- 提供灵活的 CI 集成,支持 SARIF、Code Climate 和自定义阈值。
相关
- 项目
- 项目
- Dispatch
- 项目
- 项目