Skip to main content
QUICK REVIEW

[논문 리뷰] From Query to Usable Code: An Analysis of Stack Overflow Code Snippets

Di Yang, Aftab M. Hussain|arXiv (Cornell University)|2016. 05. 14.
Software Engineering Research참고 문헌 16인용 수 54
한 줄 요약

이 논문은 자동 프로그램 생성을 위한 스택 오버플로우 코드 스니펫의 사용성에 대해 분석하며, C#, 자바, 자바스크립트, 파이썬에서의 구문 분석, 컴파일, 실행을 평가한다. 동적 타이핑 언어인 파이썬과 자바스크립트는 정적 타이핑 언어인 C#과 자바보다 훨씬 높은 사용성 비율(약 70% 실행 가능한 코드)을 보이며, 자동 코드 합성 도구의 구성 요소로 더 적합하다고 밝힌다.

ABSTRACT

Enriched by natural language texts, Stack Overflow code snippets are an invaluable code-centric knowledge base of small units of source code. Besides being useful for software developers, these annotated snippets can potentially serve as the basis for automated tools that provide working code solutions to specific natural language queries. With the goal of developing automated tools with the Stack Overflow snippets and surrounding text, this paper investigates the following questions: (1) How usable are the Stack Overflow code snippets? and (2) When using text search engines for matching on the natural language questions and answers around the snippets, what percentage of the top results contain usable code snippets? A total of 3M code snippets are analyzed across four languages: C\#, Java, JavaScript, and Python. Python and JavaScript proved to be the languages for which the most code snippets are usable. Conversely, Java and C\# proved to be the languages with the lowest usability rate. Further qualitative analysis on usable Python snippets shows the characteristics of the answers that solve the original question. Finally, we use Google search to investigate the alignment of usability and the natural language annotations around code snippets, and explore how to make snippets in Stack Overflow an adequate base for future automatic program generation.

연구 동기 및 목표

  • 스택 오버플로우 코드 스니펫이 자동 프로그램 생성을 위한 구성 요소로 사용 가능한지 평가하기.
  • 주요 프로그래밍 언어에서 구문적으로 올바르고, 컴ilesble 또는 실행 가능한 코드 스니펫의 비율을 파악하기.
  • 자연어 질의에 대한 구글 검색 상위 결과에서 스택 오버플로우의 사용 가능한 코드 스니펫을 반환하는지 평가하기.
  • 파이썬에서 고품질의 사용 가능한 코드 스니펫의 특징을 정성적 분석을 통해 규명하기.
  • 자연어 질의를 사용해 사용 가능한 코드를 검색함으로써 자동 조립 및 복구를 위한 가능성을 탐색하기.

제안 방법

  • C#, 자바, 자바스크립트, 파이썬 4개 언어에서 스택 오버플로우의 수락된 답변 코드 스니펫 300만 개를 수집하였다.
  • 자동 구문 분석, 컴파일(자바 및 C#용), 실행(파이썬 및 자바스크립트용)을 수행하여 스니펫의 사용성 평가를 수행하였다.
  • C# 및 자바 스니펫의 구문 오류를 수정하기 위해 히우리스틱 수리 기법을 적용하여 컴파일 가능성 향상에 기여하였다.
  • 실행 가능한 파이썬 스니펫에 대해 3단계 정성적 분석을 수행하여 원래 질문을 완전하고 정확하게 해결하는 데 효과적인지 평가하였다.
  • 구글 웹 검색을 사용해 샘플 질의에 대한 상위 결과를 확보하고, 해당 결과에서 사용 가능한 코드 스니펫의 비율을 측정하였다.
  • 사용성은 문법적 정확성, 컴파일 성공 여부, 런타임 오류 없이 실행 여부 기반으로 정의하였다.

실험 결과

연구 질문

  • RQ1다양한 프로그래밍 언어에서 스택 오버플로우 코드 스니펫의 사용성은 어떠한가?
  • RQ2자연어 질의에 대한 구글 검색 상위 결과에서 스택 오버플로우의 사용 가능한 코드 스니펫이 포함된 비율은 얼마인가?
  • RQ3고품질의 사용 가능한 코드 스니펫을 구분하는 특징은 무엇인가?
  • RQ4히우리스틱 수리 기법이 정적 타이핑 언어의 코드 스니펫 사용성에 얼마나 기여하는가?
  • RQ5자연어 질의와 스택 오버플로우의 사용 가능한 코드 스니펫 간의 일치성이 자동 프로그램 생성을 뒷받침할 수 있는가?

주요 결과

  • 파이썬과 자바스크립트는 약 70%의 스니펫이 실행 가능함을 보이며, C#과 자바는 약 10%에 불과하여 훨씬 높은 사용성 비율을 보인다.
  • 히우리스틱 수리 후 자바 스니펫의 컴파일 가능성은 향상되었지만, C# 스니펫은 지속적인 구문 문제로 인해 대부분 수리되지 못했다.
  • 실행 가능한 파이썬 스니펫 4만 개 이상에 대한 정성적 분석 결과, 다중 라인 코드 블록이 원래 질문을 완전하고 정확하게 해결하는 데 더 효과적임을 확인하였다.
  • 자연어 질의에 대한 상위 구글 검색 결과는 자주 이미 사용 가능한 스택 오버플로우 스니펫을 반환하여, 사용자 질의와 실행 가능한 코드 사이에 강한 일치가 있음을 시사한다.
  • 동적 타이핑 언어인 파이썬과 자바스크립트는 출시 시점부터의 높은 사용성으로 인해 자동 코드 합성의 자료로 더 적합하다고 결론 내릴 수 있다.
  • 다양한 동적 언어에서의 높은 사용성에도 불구하고, C#과 자바 스니펫의 낮은 컴파일 가능성은 정적 타이핑 환경에서의 자동 수리 및 조합에 있어 심각한 도전 과제를 암시한다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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