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 モデルを介して ML モデルを使用し、正確なテキスト一致ではなく意味的類似度を検出します。
  • インクリメンタルな再インデックス化: 変更されたファイルのみでインデックスを更新し、時間とリソースを節約します。
  • AIエージェント対応: AI コーディングエージェントがフィルタリング・処理できるように設計されたレポートを生成します。
  • 柔軟な設定: LiteLLM を通じて幅広い埋め込みプロバイダーをサポートし、類似度や複雑度の閾値をカスタマイズ可能。

関連

  • Dispatch
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト