Skip to main content
QUICK REVIEW

[논문 리뷰] A Survey on Machine Learning Techniques for Source Code Analysis

Tushar Sharma, Maria Kechagia|arXiv (Cornell University)|2021. 10. 18.
Software Engineering Research참고 문헌 350인용 수 11
한 줄 요약

이 종합 검토는 2011–2021년 동안 기계학습을 활용한 소스 코드 분석에 관한 479개의 주요 연구를 종합하여 12개의 소프트웨어 공학 작업을 분류하고, 핵심 기계학습 기법, 도구 및 데이터셋을 밝혀내며, 재현 가능성과 하드웨어 요구 사항과 같은 과제를 강조합니다. 이는 기계학습을 활용한 소프트웨어 공학 분야의 연구자와 실무자들을 안내하기 위한 종합적이고 체계적인 개요입니다.

ABSTRACT

The advancements in machine learning techniques have encouraged researchers to apply these techniques to a myriad of software engineering tasks that use source code analysis, such as testing and vulnerability detection. Such a large number of studies hinders the community from understanding the current research landscape. This paper aims to summarize the current knowledge in applied machine learning for source code analysis. We review studies belonging to twelve categories of software engineering tasks and corresponding machine learning techniques, tools, and datasets that have been applied to solve them. To do so, we conducted an extensive literature search and identified 479 primary studies published between 2011 and 2021. We summarize our observations and findings with the help of the identified studies. Our findings suggest that the use of machine learning techniques for source code analysis tasks is consistently increasing. We synthesize commonly used steps and the overall workflow for each task and summarize machine learning techniques employed. We identify a comprehensive list of available datasets and tools useable in this context. Finally, the paper discusses perceived challenges in this area, including the availability of standard datasets, reproducibility and replicability, and hardware resources.

연구 동기 및 목표

  • 다양한 소프트웨어 공학 작업에 걸쳐 기계학습 응용 사례를 종합적이고 최신 정보를 반영한 방식으로 제공하기 위해.
  • 이 분야에서 가장 널리 사용되는 기계학습 기법, 도구 및 데이터셋을 식별하고 분류하기 위해.
  • 재현 가능성, 표준 데이터셋 부족, 높은 하드웨어 요구 사양과 같은 지속적인 과제를 부각하기 위해.
  • 사용 가능한 자원을 통합하고 향후 방법론적 개선을 안내함으로써 연구자와 실무자를 지원하기 위해.
  • 지속적인 관련성과 커뮤니티 확장성을 보장하기 위해 살아있는, 오픈소스 문헌 자료 저장소를 구축하기 위해.

제안 방법

  • 포괄적인 검색어 세트와 반복적인 질의 최적화를 통해 주요 디지털 라이브러리에서 광범위한 문헌 검색을 수행했습니다.
  • 소스 코드 분석을 위한 소프트웨어 공학 작업에 적용된 기계학습 기법에 초점을 맞춘 479개의 주요 연구를 선별하기 위해 엄격한 포함 및 배제 기준을 적용했습니다.
  • 연구를 12개의 소프트웨어 공학 작업 카테고리로 체계적으로 분류하였으며, 각 카테고리에 하위 카테고리 및 워크플로우 단계를 포함했습니다.
  • 각 연구에서 기계학습 기법, 도구, 데이터셋 및 실험 설정과 같은 메타데이터를 추출하고 종합했습니다.
  • 정확성과 일관성을 확보하기 위해 최소 두 명의 저자가 이중 검토를 통해 데이터 추출을 검증했습니다.
  • 공개적이고 오픈소스 웹사이트 및 스프레드시트(https://github.com/tushartushar/ML4SCA)를 구축하여 살아있는 확장 가능한 문헌 자료 저장소로 활용했습니다.

실험 결과

연구 질문

  • RQ1소스 코드 분석에서 기계학습 기법이 가장 광범위하게 적용된 소프트웨어 공학 작업은 무엇인가요?
  • RQ2이 분야에서 가장 널리 사용되는 기계학습 모델, 도구 및 데이터셋은 무엇인가요?
  • RQ3다양한 소스 코드 분석 작업 간에 반복되는 워크플로우 및 방법론적 패턴은 무엇인가요?
  • RQ4기계학습 기반 소스 코드 분석 연구에서 재현 가능성, 확장성 및 접근성에 장애가 되는 주요 과제는 무엇인가요?
  • RQ5커뮤니티는 표준화, 도구 개선 및 자원 가용성을 향상시켜 분야 발전을 어떻게 도울 수 있을까요?

주요 결과

  • 2011년부터 2021년까지 소스 코드 분석을 위한 기계학습 응용은 일관되고 지속적인 증가 추세를 보였으며, 총 479개의 주요 연구가 확인되었습니다.
  • 딥러닝 모델, 특히 신경망 기반 모델이 취약점 탐지, 코드 요약, 결함 예측 등의 작업 전반에서 널리 사용되고 있습니다.
  • 많은 연구에서 소스 코드 표현을 위해 코드 임베딩(예: CodeBERT, GraphCodeBERT)을 사용하고 있어 사전 학습된 모델에 대한 강한 추세를 보이고 있습니다.
  • 연구가 급증하고 있음에도 불구하고, 도구와 데이터셋을 체계적으로 기록한 종합 검토는 소수에 불과하여, 본 검토가 이를 메우는 격차를 해소하고 있습니다.
  • 재현 가능성과 재현 가능성 확보가 여전히 주요 과제이며, 데이터셋 사용 방식의 일관성 부족과 표준화된 평가 프로토콜 부족이 문제입니다.
  • 특히 대규모 딥러닝 모델의 경우 하드웨어 자원 요구 사항이 높아 기관 인프라가 없는 연구자들에게 접근을 제한하고 있습니다.

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

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

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

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