Treepeat - Tree-sitterを活用したコード類似度検出ツール
Show HN: Treepeat – Code similarity detection using Tree-sitter
Treepeatは、Tree-sitterのAST解析と局所性鋭敏ハッシュを組み合わせて、コードベース内の類似コードを検出するツールです。完全な重複だけでなく、空白や文字列を無視したニアデュプリケート、識別子を匿名化した構造的類似コードも見つけられます。類似度の閾値や最小行数を指定でき、差分表示やSARIF形式での出力でCIにも統合可能。Python、JavaScript、Go、Rustなど多言語に対応し、pip install treepeatで簡単に導入できます。
言語にとって意味のある重複コードブロック(クラスや関数)を見つけ、単なる行の重複ではない類似性を検出します。
- ryuuseijin
これはまさに、重複コード検出を手伝いたかったところだ。エージェント型プログラミングでは、エージェントが大きなコードベースでヘルパー関数を大量に重複させる傾向があるため、今や現実的な問題になっている。
結局、ベクトル検索を使う自分のツール[1]を書くことになった。動きはするが、大規模なコードベースでは使い物にならないほど遅くなることがある。
これは試してみるよ。
- adityamishra241
いいアプローチだね。ASTレベルの類似度は、単純なテキストマッチングよりもずっと役立ちそうだ。
- Game_Ender
読めるREADMEをありがとう。少しAIの助けが入っているかもしれないが、簡潔でツールの使い方が明確だ。