Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# ソフトウェア工学# 人工知能# 機械学習

プログラミング言語間のコードクローンを検出する

異なる言語でコードクローンを特定するためのLLMの使用に関する研究。

― 1 分で読む


コードクローン検出のインサコードクローン検出のインサイトるLLMの調査。クロスランゲージコードクローン検出におけ
目次

ソフトウェア開発においてコードをコピーすることは、コードクローンとして知られる重複を生むことがある。この習慣は、バグや後でコードを修正する際の難しさなどの問題を引き起こすことがある。コードクローンは一般的で、研究によると、ソフトウェアシステムのコードの5%から23%がクローンである可能性がある。クローンには、全く同じコードから見た目は異なるが動作は似たものまで、さまざまな種類がある。これらのクローンを特定することは重要で、特にソフトウェア開発者がさまざまな課題に対処するために複数のプログラミング言語を使用する際はなおさらだ。

異なる言語間でのコードクローンを管理するために、研究者たちはこれらの重複を効果的に検出する方法を開発してきた。この論文では、さまざまなプログラミング言語でコードクローンを特定するために、大規模言語モデル(LLMs)と埋め込みモデル(EM)の使用について議論する。

コードクローンとは?

コードクローンは、特定の類似性の定義に基づいて類似性を示すコード断片のペアだ。クローンの種類は4つある:

  1. タイプ1クローン: ホワイトスペースやコメントのみが異なる同一のコード断片。
  2. タイプ2クローン: タイプ1に似ているが、変数名や関数名が違うことがある。
  3. タイプ3クローン: 構造は似ているが、文レベルで異なり、一部の行が削除または追加されている。
  4. タイプ4クローン: 同じ機能を持つが、実装が異なるコードスニペットのこと。

異言語間のコードクローンはタイプ4と見なされ、異なるプログラミング言語で類似の機能が存在する。

異言語間のコードクローンの課題

ソフトウェア開発が進化する中で、開発者はしばしば1つのプロジェクトで複数のプログラミング言語を使用する。例えば、バックエンド開発にはJava、モバイルアプリケーションにはSwiftを使用することがある。これにより、これらの言語間でコードクローンが作成される可能性が高まる。開発者が一つの言語でコードの一部を修正すると、その変更を他の言語でも再現する必要があり、このプロセスは時間がかかり、リソースを消耗する。

この作業を簡単にするためには、異なる言語間でコードクローンを検出する自動システムが必要だ。現在の多くのツールは同じ言語内のクローンを特定することに重点を置いているが、異なる言語に存在する意味的クローンを適切に扱うツールは少ない。

コードクローン検出のための既存ツール

多くのツールや方法がコードクローンを特定するために作られている。これらのツールには次のようなものがある:

  • CCFinder
  • Deckard
  • NiCad
  • SourcererCC
  • DeepSim

これらのツールは主に同じプログラミング言語内のクローンを検出することに焦点を当てている。意味的クローンのために、RtvNNやCDLHのようなより特定の方法も提案された。

近年、多言語でのコードクローンに焦点を当てた新しいツールが登場している。これらのツールは、深層学習技術を活用してコード断片の類似点や違いを捉えている。注目すべきツールには次のようなものがある:

  • LICCA
  • CLC Miner
  • C4
  • TCCCD

これらのツールは、コード断片間の構文的および意味的な関係を探ることで、異言語のクローンを検出することを目指している。

大規模言語モデルの役割

OpenAIによって開発された大規模言語モデルの台頭は、ソフトウェア工学を含むさまざまな分野に大きな影響を与えている。これらのモデルは、受け取った入力に基づいて人間のようなテキストを生成することができる。これをコードクローン検出に適用すると、出力を導くプロンプトを提供することで役立つ。

この研究では、LLMが異言語間のコードクローンを特定する性能や、異なるプロンプトがその性能に与える影響を調査する。4つのLLMと、異なるプログラミング言語でコードクローンを検出するためのさまざまなプロンプト設計に対する反応を探る。

研究質問

異言語間のコードクローン検出におけるLLMの性能を調査するため、以下の研究質問に焦点を当てた:

  1. プロンプトのデザインは、LLMが異言語のコードクローンを検出する効果にどのように影響するのか?
  2. LLMは、この文脈でコードクローンを構成するものを本当に理解しているのか?
  3. プログラミング言語間の類似性は、LLMのクローン検出性能にどのように影響するのか?
  4. LLMは、異言語間のコードクローン検出において従来の機械学習モデルを上回ることができるのか?

実験方法論

私たちは研究のために4つのLLMを選んだ:GPT-3.5-Turbo、Falcon-7B-Instruct、Llama2-Chat-7B、Starchat。それぞれ、コードクローンを検出するための特定のプロンプトを使用してテストした。また、コードの表現を作成する能力で知られる事前学習済み埋め込みモデル、Text-Embedding-Ada-002も評価した。

モデルを評価するために、XLCoSTとCodeNetの2つのデータセットを使用した。これらのデータセットはさまざまな言語で大量のプログラミングサンプルを含んでいて、分析に適している。

プロンプトエンジニアリング

プロンプトエンジニアリングは、LLMがタスクでの性能を最適化するための具体的な指示を作成することを含む。私たちは、シンプルなはい/いいえの質問、数値的な類似度スコア、段階的な推論プロンプトなど、さまざまなプロンプトを使用した。これらのプロンプトを調整することで、モデルのコードクローン検出能力を向上させることを目指した。

評価指標

性能を測定するために、精度、再現率、F1スコアを使用した。精度は肯定的な予測の正確さを評価し、再現率は実際のクローンがどれだけ正しく特定されたかを測り、F1スコアは精度と再現率をバランスさせることでモデルの正確さの全体像を提供する。

結果

LLMの性能

実験の結果、GPT-3.5-Turboが全体的に最も良い結果を示し、シンプルなプロンプトでF1スコア0.98を達成した。他のモデル、Llama2-Chat-7BやFalcon-7Bは、使用したデータセットによって0.41から0.81のスコアを示した。

コードクローンの明確な定義を提供する改善されたプロンプトを使用することで、すべてのモデルの性能が向上した。これは、LLMが推論プロセスを導く詳細な指示から大きく利益を受けることを示唆している。

埋め込みモデルの性能

LLMに加えて、埋め込みモデルのText-Embedding-Ada-002が異言語間のコードクローンを検出する上でLLMを上回る性能を示した。このモデルは高いF1スコアを達成し、異なる言語間で意味を持ってコードを表現する能力がクローン検出において非常に効果的であることを示している。

プログラミング言語の類似性の影響

プログラミング言語間の類似性がLLMの性能に影響を与えることも観察された。例えば、JavaとC++は構文的な特徴を共有しており、JavaとPythonのように大きく異なる言語と比較すると、クローンの検出がより良好である。推論を強調する複雑なプロンプトを使用すると、異なる構文構造を持つ言語間でもLLMの性能が向上した。

結論

結論として、私たちの研究は、大規模言語モデルが異言語間のコードクローンを検出する可能性を持つ一方、最高の性能を発揮するためには効果的なプロンプトエンジニアリングが必要であることを示している。しかし、埋め込みモデルは一貫してLLMを上回る結果を示し、学習された表現に基づく従来の方法が特定のタスクにおいてより効果的である可能性がある。

ソフトウェア工学の分野が進化し続ける中で、異なるモデルがどのように協力できるかを理解することが重要になるだろう。この研究は、LLMと埋め込みモデルの強みを組み合わせることによるコードクローン検出の最適化のさらなる可能性を開く。

今後の研究

今後の研究では、追加のプロンプトデザインを探求し、さまざまなモデルアーキテクチャが性能に与える影響を明らかにすることができる。より広範なプログラミング言語を調査し、より大規模なデータセットを取り入れることも、さまざまな文脈におけるコードクローン検出に関するより深い洞察を得るのに役立つだろう。これらの方法を洗練させることで、開発者はソフトウェアの品質を向上させ、コードのメンテナンスの負担を軽減することができる。

LLMと埋め込みモデルを統合したツールを開発することで、ソフトウェア工学の分野でより高度で効果的なソリューションへの道が開かれるだろう。

オリジナルソース

タイトル: Large Language Models for cross-language code clone detection

概要: With the involvement of multiple programming languages in modern software development, cross-lingual code clone detection has gained traction with the software engineering community. Numerous studies have explored this topic, proposing various promising approaches. Inspired by the significant advances in machine learning in recent years, particularly Large Language Models (LLMs), which have demonstrated their ability to tackle various tasks, this paper revisits cross-lingual code clone detection. We investigate the capabilities of four (04) LLMs and eight (08) prompts for the identification of cross-lingual code clones. Additionally, we evaluate a pre-trained embedding model to assess the effectiveness of the generated representations for classifying clone and non-clone pairs. Both studies (based on LLMs and Embedding models) are evaluated using two widely used cross-lingual datasets, XLCoST and CodeNet. Our results show that LLMs can achieve high F1 scores, up to 0.98, for straightforward programming examples (e.g., from XLCoST). However, they not only perform less well on programs associated with complex programming challenges but also do not necessarily understand the meaning of code clones in a cross-lingual setting. We show that embedding models used to represent code fragments from different programming languages in the same representation space enable the training of a basic classifier that outperforms all LLMs by ~2 and ~24 percentage points on the XLCoST and CodeNet datasets, respectively. This finding suggests that, despite the apparent capabilities of LLMs, embeddings provided by embedding models offer suitable representations to achieve state-of-the-art performance in cross-lingual code clone detection.

著者: Micheline Bénédicte Moumoula, Abdoul Kader Kabore, Jacques Klein, Tegawendé Bissyande

最終更新: 2024-08-08 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2408.04430

ソースPDF: https://arxiv.org/pdf/2408.04430

ライセンス: https://creativecommons.org/licenses/by-nc-sa/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事