[논문 리뷰] 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이 전통 도구와 비교하여 클론 유형별 코드 클론 탐지 성능을 어떻게 나타내는가를 평가한다.
- 간단한 프롬프트, 한 단계 차근추론 프롬프트, 다중 단계 차근추론 프롬프트가 탐지 정확도에 미치는 영향을 조사한다.
- 코드 임베딩과 코드 특화 모델의 클론 탐지 효과를 평가한다.
- 클론 탐지 성능이 프로그래밍 언어에 따라 어떻게 달라지는지 확인한다.
제안 방법
- 단순 프롬프트, 한 단계 차근추론 프롬프트, 다중 단계 차근추론 프롬프트, 코드 임베딩 접근법을 포함하는 다중 프롬프트 프레임워크를 정의하여 클론 탐지를 수행한다.
- Java, C/C++, Python 코드로 구성된 BigCloneBench-based 데이터셋에서 12개의 언어 모델(open-source, API-based, embedding-based)을 평가한다.
- 표준 지표(정밀도, 재현율, F1)를 사용하여 LLM과 여덟 개의 전통적인 클론 탐 detectors를 비교한다.
- 클론 탐지 성능에 대한 모델 지시어 튜닝의 영향을 분석한다.
- 다른 언어와 클론 유형이 탐지 결과에 미치는 영향을 특성화한다.
- 복제 가능성 및 추가 연구를 지원하기 위해 오픈 소스 데이터와 코드를 제공한다.
실험 결과
연구 질문
- RQ1RQ1: LLM이 단순 프롬프트로 코드 클론을 탐지할 수 있는가?
- RQ2RQ2: 한 단계 차근추론 프롬프트를 사용할 때 LLM의 성능은 어떠한가?
- RQ3RQ3: 다중 단계 차근추론 프롬프트를 사용할 때 LLM의 성능은 더 나아지는가?
- RQ4RQ4: 코드 임베딩을 사용할 때 LLM의 성능은 어떠한가?
- RQ5RQ5: 서로 다른 프로그래밍 언어에서 코드 클론 탐지의 성능은 어떻게 달라지는가?
주요 결과
- LLMs는 Type-3 및 Type-4와 같은 복합 유형의 클론에서 간단한 프롬프트를 사용할 때 일부 비-LLM 도구보다 우수한 성능을 보여주며, GPT-3.5-Turbo 및 GPT-4가 높은 재현율과 정확도를 달성한다.
- 한 단계 차근추론 프롬프트는 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가 만들고, 인간 에디터가 검토했습니다.