Skip to main content
QUICK REVIEW

[논문 리뷰] No Need to Lift a Finger Anymore? Assessing the Quality of Code Generation by ChatGPT

Zhijie Liu, Yutian Tang|arXiv (Cornell University)|2023. 08. 09.
Artificial Intelligence in Healthcare and EducationMedicine인용 수 3
한 줄 요약

이 연구는 C, C++, 자바, 파이썬, 자바스크립트 5개 프로그래밍 언어에서 정확성, 복잡도, 보안성 측면에서 챗지피티의 코드 생성 능력을 체계적으로 평가한다. 728개의 알고리즘 문제와 54개의 CWE 기반 시나리오를 사용하여, 2021년 이전 문제에 대해서는 기능적으로 정확한 코드를 생성하는 데 있어 48.14% 높은 수용률을 기록하지만, 직접적인 버그 수정 능력은 열악하다. 그러나 다중 라운드 수정을 통해 89% 이상의 취약성을 해결할 수 있으며, 복잡도는 종종 증가하고 비결정성이 출력 일관성에 영향을 미친다.

ABSTRACT

Large language models (LLMs) have demonstrated impressive capabilities across various NLP tasks. Additionally, LLMs are also highly valuable in supporting software engineering tasks, particularly in the field of code generation. Automatic code generation is a process of automatically generating source code or executable code based on given specifications or requirements, improving developer productivity. In this study, we perform a systematic empirical assessment to the quality of code generation using ChatGPT. We leverage 728 algorithm problems in five languages (i.e., C, C++, Java, Python, and JavaScript) and 18 CWEs with 54 code scenarios for the code generation task. Our evaluation encompasses a comprehensive analysis of code snippets generated by ChatGPT, focusing on three critical aspects: correctness, complexity, and security. We also specifically investigate ChatGPT's ability to engage in multi-round fixing process (i.e., ChatGPT's dialog ability) of facilitating code generation. By delving into the generated code and examining the experimental results, this work provides valuable insights into the performance of ChatGPT in tackling code generation tasks over the three critical aspects. Overall, our findings uncover potential issues and limitations that arise in the ChatGPT-based code generation and lay the groundwork for improving AI and LLM-based code generation techniques.

연구 동기 및 목표

  • 채팅지피티가 여러 프로그래밍 언어와 문제 세트에서 생성한 코드의 기능적 정확성을 평가하는 것.
  • 채팅지피티가 생성한 코드 스니펫의 순환 및 인지 복잡도를 분석하는 것.
  • CWE 기반 시나리오를 사용하여 생성된 코드 내 존재하는 보안 취약성과 그 보완 방법을 조사하는 것.
  • 다중 라운드 수정 프로세스가 코드 품질 향상에 얼마나 효과적인지 평가하는 것.
  • 채팅지피티의 비결정성(Non-determinism)이 정확성, 복잡도, 보안성 측면에서 코드 일관성에 미치는 영향을 검토하는 것.

제안 방법

  • 연구는 경쟁 프로그래밍 플랫폼에서 확보한 728개의 알고리즘 문제를 사용하며, 이는 2021년 이전 및 이후 문제 세트로 분류된다.
  • 표준화된 판단 플랫폼을 사용하여 C, C++, 자바, 파이썬, 자바스크립트 5개 언어에서 코드 생성을 평가한다.
  • 보안 취약성은 18개의 CWE와 54개의 코드 시나리오를 기반으로 평가되며, 일반적인 코딩 결함을 중심으로 한다.
  • 다중 라운드 수정 프로세스는 챗지피티가 피드백에 기반해 오류가 있는 코드를 반복적으로 수정하는 방식으로 시뮬레이션된다.
  • 각 생성된 코드 스니펫에 대해 순환 복잡도와 인지 복잡도 메트릭을 계산하여 구조적 복잡도를 평가한다.
  • 비결정성은 동일한 프롬프트에 대해 여러 번 코드 샘플을 생성하고, 정확성, 복잡도, 보안성 측면에서의 변동성을 측정하여 분석한다.

실험 결과

연구 질문

  • RQ1채팅지피티의 코드 생성 성능은 기능적 정확성 측면에서 2021년 이전 문제와 이후 문제 간에 어떻게 다를까?
  • RQ2채팅지피티가 생성한 코드의 순환 복잡도와 인지 복잡도 분포는 각 프로그래밍 언어에서 어떻게 분포되어 있는가?
  • RQ3채팅지피티가 생성한 코드 스니펫은 실제 워크플레이스의 CWE 시나리오에서 얼마나 많은 보안 취약성을 포함하고 있는가?
  • RQ4다중 라운드 수정 프로세스는 생성된 코드의 기능적 버그와 보안 취약성을 얼마나 효과적으로 수정하는가?
  • RQ5채팅지피티의 비결정성은 정확성, 복잡도, 보안성 측면에서 코드 생성의 일관성에 어떻게 영향을 미치는가?

주요 결과

  • 채팅지피티는 2021년 이전 알고리즘 문제에 대해 코드 판단 플랫폼에서 평균 48.14% 높은 수용률을 기록한다.
  • 채팅지피티의 다중 라운드 수정 프로세스는 오류가 있는 코드를 직접적으로 수정하여 기능적 정확성을 확보하는 데 상대적으로 약하다.
  • 순환 복잡도와 인지 복잡도는 다양한 프로그래밍 언어 간에 크게 다름을 보이며, 일반적으로 다중 라운드 수정 과정에서 복잡도는 유지되거나 증가한다.
  • 알고리즘 문제에 대해 C, C++, 자바와 CWE 기반 시나리오에 대해 C, 파이썬3에서 챗지피티가 생성한 코드는 관련 보안 취약성을 포함한다.
  • 다중 라운드 수정 프로세스는 C에서 100%의 취약성을 해결했고, 파이썬3에서는 89.4%의 취약성을 해결하여 강력한 보완 잠재력을 보였다.
  • 채팅지피티의 비결정성은 동일한 프롬프트에 대해 여러 번 생성된 코드 간 기능적 정확성, 복잡도, 보안성 측면에서 변동성을 초래한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.