rafal-qa/slopo
Embedding-based code duplication detector
解決的問題
Slopo 是一個 CLI 工具,旨在在程式碼庫中發現非完全一致的程式碼重複。雖然標準工具能輕易識別完全複製貼上的程式碼,但 Slopo 專注於「相似」程式碼——即寫法相似但不完全相同,且通常分散在不同模組或大型檔案中,難以被人類或傳統工具檢測到的程式碼片段。
工作原理
Slopo 使用嵌入模型(embedding models)將程式碼單元表示為向量。它為每個程式碼單元計算嵌入,並識別出餘弦相似度較高的配對。這些相似的單元被聚類分組,然後根據其相似度和在程式碼庫中的距離進行重新排序(對距離較遠的單元給予獎勵)。最終生成的聚類會以報告形式呈現,供 AI 編碼代理審查,以確認是否為需要重構的實際重複程式碼。
適用對象
希望在多語言大型專案中(支援 Python、TypeScript、JavaScript、Java、Kotlin、C#、Go、Rust、PHP 和 Elixir 等)透過識別和重構冗餘、相似程式碼來減少技術負債的開發者與團隊。
主要亮點
- 基於嵌入的檢測:透過 Jina AI、Voyage AI 或本地 Ollama 模型使用機器學習模型,檢測語意相似性而非精確文字匹配。
- 增量式重索引:僅更新已變更的檔案來重建索引,節省時間與資源。
- AI 代理就緒:生成的報告專為 AI 編碼代理的過濾與處理而設計。
- 靈活配置:透過 LiteLLM 支援多種嵌入提供者,並可調節相似度與複雜度閾值。
相關
- Dispatch
- Dispatch
- 專案
- 專案
- 專案