Skip to content

FAQ

English

Q: dup-code-check 支持哪些语言?

当前检测器主要基于“文本/字符/token/花括号块”启发式,因此对语言没有硬依赖:

  • 重复文件:任何文本都可以
  • code spans / line spans:任何文本都可以(但更偏代码形态)
  • token/block/“AST 子树”:对 {} 结构明显的语言更有效(JS/TS/Java/C/C++/Rust 等)

Q: 这是一个完整的克隆检测器吗?覆盖 Type-2/3 吗?

它更像一个“可工程落地的工具箱”,覆盖从强信号到启发式的多层检测:

  • file duplicates:强信号、低成本
  • token spans / blocks:对一部分 Type-2 更稳健
  • MinHash/SimHash:提供 Type-3 方向的“相似提示”

但它不是学术意义上的完整 clone detector,也不会做语言级 AST 解析(当前是 {} 结构近似)。

Q: 为什么选择 Rust + Node.js?

  • Rust:扫描/归一化/指纹计算在性能和内存上更可控
  • Node.js:CLI 交付与生态集成更方便(在前端/全栈工程中落地成本低)

Q: 为什么安装时需要 Rust?能不能不编译?

当前版本会在安装阶段从源码构建原生模块,因此需要 Rust。

未来如果引入预编译产物(prebuild),可以将“安装依赖 Rust”变成可选。

Q: 结果里的 hash 是什么?会冲突吗?

hash 是对归一化内容的 64-bit 指纹(以 16 位 hex 字符串输出)。

实现会在同一 hash bucket 内做 sample 对比以降低碰撞风险,但理论上仍可能存在极低概率的冲突。若你的场景对零碰撞有强需求,建议把结果当作候选,再做二次验证。

Released under the MIT License.