← 最新の論文
💻 コンピュータサイエンス

An LLM-based Technique for Detection of Code Clones Across Open Source Microservice Repository Forks

本研究は、Codestral-22B LLMを用いたFew-shot継続的プロンプティングを活用したRAGベースのパイプラインが、現在の再現率における制限にもかかわらず、従来の構文ベースのツールを上回り、オープンソースのマイクロサービスフォークにおける意味的なコードクローンおよび再利用パターンを効果的に特定できることを実証している。

原著者: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

公開日 2026-10-21
📖 1 分で読めます☕ さくっと読める

原著者: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

原論文は CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) でライセンスされています。 ✨ これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

ソフトウェア開発という広大で協力的な世界において、プログラマーは既存のコードを取り込み、異なる目的のために適応させることで、新しいアプリケーションを構築することがよくあります。「フォーク」として知られるこの慣習は、オープンソースのイノベーションの原動力であり、チームがゼロから始めるのではなく、巨人の肩の上に立つことを可能にします。しかし、これらのプロジェクトが成長し、枝分かれしていくにつれ、隠れた複雑さが生じます。その中のコードが、絡み合った重複の網となる可能性があるのです。一部のコピーは、行単位で完全に一致する複製ですが、他のものは、表面上は全く異なって見えるものの、同じことを行うように巧みに書き直されたバージョンです。これらは「コードクローン」として知られています。大規模なソフトウェアシステムの保守担当者にとって、特に多くの小さく独立したサービスとして構築されたシステムの場合、これらの重複を見つけ出すことは並大把の作業です。従来のツールは、正確なコピーを見つけることには優れていますが、二つのコードが全く異なる方法で同じ機能を果たすようにリファクタリングされた場合、それを見逃してしまうことがよくあります。どこに、どのように重複が存在するかを理解することは極めて重要です。なぜなら、それはソフトウェアがどのように進化するか、どこに不整合のリスクがあるか、そしてシステムを円滑に稼働させ続けるために真にどれほどの努力が必要であるかを明らかにするからです。

研究チームは最近、新しい種類のデジタルツール、すなわち「大規模言語モデル」をテストすることで、この問題を解決しようと試みました。これらは物語を書いたり質問に答えたりできる強力な人工知能システムと同じものですが、ここではコンピュータコードの論理を理解するように訓練されました。研究者たちは、これらのモデルが高度な顕微鏡のように機能し、同一のコードだけでなく、従来のツールが見逃してしまうような意味的に類似したコードをも特定できるかどうかを確認したいと考えました。彼らは、調査対象として、多くの小さく交換可能な部品から構築される現代的なソフトウェアシステムである、オープンソースのマイクロサービス・プロジェクトに焦点を当てました。まず、これらのモデルに異なる種類のコードクローンを認識する方法を教える必要がありました。彼らは、1万組のC++コードスニペットの膨大なデータセットを集めました。その半分は、機能的には同一だが構文的には異なるものであり、残りの半分は無関係なものでした。彼らは、汎用システムから、コーディング作業用に特別に設計された2つの特化型モデルに至るまで、3つの異なるAIモデルをテストしました。また、単純な指示から、例を提供し信頼度スコアを求める複雑なプロンプトに至るまで、あらゆる方法でモデルにタスクを実行させる実験を行いました。

この初期テストの結果は、非常に示唆に富むものでした。研究者たちは、特化型のコーディングモデルが汎用モデルよりもはるかに優れていることを見出しました。その中でも、「Codestral」という名称のモデルが最も高い精度を実現し、最も優れた結果を残し、もう一つの特化型モデルおよび汎用システムの両方を上回りました。しかし、この研究は重大な限界も明らかにしました。最高のモデルであってもミスを犯すということです。それは、本来見つけるべき重複を見逃すことが頻繁にあり、約4割の割合で検出に失敗していました。モデルは、明らかに異なるコードを識別することには長けていましたが、微妙な類似性を察知することに関しては慎重すぎました。この高い見逃し率は、現時点では、これらの強力なツールがプロフェッショナルな自動化環境におけるコード管理の唯一の手法として信頼できるレベルには達していないことを意味しています。これらは有用な助手ではありますが、人間の判断や確立された検出手法に取って代わることはまだできません。

最も優れた性能を示したモデルと最も効果的なプロンプト手法を武器に、研究者たちは次に現実の世界へと目を向けました。彼らは、一方がオリジナルプロジェクトであり、もう一方が異なる開発グループによって修正されたフォークである、22組のオープンソース・マイクロサービス・リポジトリを選択しました。彼らはこれらのコードベースをシステムに入力し、オリジナルとフォークの間にどのような種類の重複が存在するかをマッピングしました。その結果は、これらのプロジェクトがどのように進化するかという明確な姿を描き出しました。最も多く見られた重複のタイプは、コードが変更されていない「正確なコピー」でした。次に多かったのは「タイプ3」のクローンであり、これはコードに加筆や削除が行われているものの、元の機能を保持しているものです。驚くべきことに、全く異なる方法で同じことを行う「完全に書き直されたコード」は、これらの特定のプロジェクトにおいては他のタイプよりも少ないという結果が出ました。このことは、開発者がマイクロサービスをフォークする際、車輪を完全に再発明するのではなく、コアとなる構造を維持する傾向があることを示唆しています。

自動化された発見の信頼性を確保するため、研究者たちは、3つのプロジェクトに対する人間による手動レビューとモデルの出力を比較しました。人間の査読者は、モデルが最も一般的な種類の重複を特定することについては概ね正しいことを確認しましたが、モデルがコードを読み取るために使用した基盤技術によって、具体的な数値は変動しました。研究は、人工知能はコードの断片間の深い意味的な関係を理解するための有望な新しい方法を提供するものの、まだ完璧な解決策ではないと結論付けました。この技術は、人間や古いツールが見逃す可能性のあるパターンを見抜くほど強力ですが、重複を完全に見逃してしまうという高いリスク(取りこぼし)の問題に依然として苦しんでいます。当面の間、これらのモデルは、コードの複雑な履歴をナビゲートするためのガイドとして最も適しており、最終的な決定権を持つ存在ではありません。今後の進むべき道は、これらのエラーを減らすためにツールを洗練させ、その意味的な理解能力を伝統的な手法と組み合わせることで、ソフトウェアの進化に関するより完全な全体像を作り上げることです。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →