[論文レビュー] Towards Understanding the Capability of Large Language Models on Code Clone Detection: A Survey
本論文は、プロンプト、推論スタイル、埋め込み、言語に跨って多様な LLM を用いたコードクローン検出を実証的に評価し、プロンプトと埋め込みが性能を向上させ、言語の影響が観察されたことを示している。
Code cloning, the duplication of code fragments, is common in software development. While some reuse aids productivity, excessive cloning hurts maintainability and introduces bugs. Hence, automatic code clone detection is vital. Meanwhile, large language models (LLMs) possess diverse code-related knowledge, making them versatile for various software engineering challenges. However, LLMs' performance in code clone detection is unclear and needs more study for accurate assessment. In this paper, we provide the first comprehensive evaluation of LLMs for clone detection, covering different clone types, languages, and prompts. We find advanced LLMs excel in detecting complex semantic clones, surpassing existing methods. Adding intermediate reasoning steps via chain-of-thought prompts noticeably enhances performance. Additionally, representing code as vector embeddings, especially with text encoders, effectively aids clone detection.Lastly, the ability of LLMs to detect code clones differs among various programming languages. Our study suggests that LLMs have potential for clone detection due to their language capabilities, offering insights for developing robust LLM-based methods to enhance software engineering.
研究の動機と目的
- オープンソースおよび API ベースの LLM が、クローンタイプ全体で従来のツールと比較してコードクローン検出をどのように実行するかを評価する。
- 単純なプロンプト、1 段階および多段階のチェーン・オブ・チョート(CoT)プロンプトが検出精度に与える影響を調査する。
- コード埋め込みとコード特化モデルのコードクローン検出の有効性を比較評価する。
- プログラミング言語別にクローン検出性能のばらつきを検討する。
提案手法
- コードクローン検出のための、単純なプロンプト、1 段階および多段階のチェーン・オブ・チョート(CoT)プロンプト、そしてコード埋め込みアプローチを含むマルチプロンプト・フレームワークを定義する。
- Java、C/C、Python のコードを含む BigCloneBench ベースのデータセットで、12 の言語モデル(オープンソース、API ベース、埋め込みベース)を評価する。
- 標準指標(Precision、Recall、F1)を用いて、LLMs を 8 種類の従来のクローン検出器と比較する。
- クローン検出性能に対するモデル指示チューニングの影響を分析する。
- 異なる言語とクローンタイプが検出結果に与える影響を特徴づける。
- 再現性とさらなる研究を支援するために、オープンソースのデータとコードを提供する。
実験結果
リサーチクエスチョン
- RQ1RQ1: LLM は単純なプロンプトでコードクローンを検出できるか?
- RQ2RQ2: 1 段階のチェーン・オブ・チョート・プロンプトを使用した場合、LLMs の性能はどうなるか?
- RQ3RQ3: 多段階のチェーン・オブ・チョート・プロンプトを使用することで、LLMs はより良い性能を発揮するか?
- RQ4RQ4: コード埋め込みを使用した場合、LLMs の性能はどうなるか?
- RQ5RQ5: コードクローン検出における LLM の性能は、異なるプログラミング言語によってどのように異なるか?
主な発見
- LLMs は、単純なプロンプトを用いた場合に、複雑なクローンタイプ(Type-3 および Type-4)で一部の非LLMツールを上回り、GPT-3.5-Turbo と GPT-4 が高いリコールと精度を達成する。
- 1 段階のチェーン・オブ・チョート・プロンプトは GPT-3.5-Turbo と GPT-4 の性能を向上させるが、すべての中間推論を集約することは GPT-3.5-Turbo には悪影響を及ぼす可能性がある一方、GPT-4 には影響しない。
- 多段階のチェーン・オブ・チョート・プロンプトは推論間の干渉を引き起こし結果を低下させる可能性がある;別々の説明と深い分析は一定の利点を提供する。
- テキスト埋め込み(text-embedding-ada-002)は、クローン検出においてコード特化モデル(CodeBERT 系)を上回ることがある。
- LLM の性能は言語によって異なり、Python はトレーニングデータの親和性と単純さのために一般により良い結果を示す。
- GPT-3.5-Turbo および GPT-4 は、評価されたモデルの中で総合的に最良の結果を示す。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。