Skip to main content
QUICK REVIEW

[논문 리뷰] How Often Do Single-Statement Bugs Occur? The ManySStuBs4J Dataset

Rafael-Michael Karampatsis, Charles Sutton|arXiv (Cornell University)|2019. 05. 30.
Software Testing and Debugging Techniques참고 문헌 26인용 수 23
한 줄 요약

이 논문은 1,000개의 인기 있는 오픈소스 자바 프로젝트에서 추출한 153,652개의 단일 문장 버그 수정 변경사항을 포함하는 ManySStuBs4J 데이터셋을 소개한다. 이는 16개의 일반적인 버그 템플릿으로 주석 처리되어 있으며, 이들 중 33.47%가 알려진 템플릿과 일치함을 발견했다. 이는 간단한 버그의 상당 부분이 소수의 사전 정의된 패tern으로 복구될 수 있음을 시사하며, 약 1,600~2,500줄의 코드당 한 번 정도의 빈도로 이러한 유형의 버그가 발생할 것으로 추정된다.

ABSTRACT

Program repair is an important but difficult software engineering problem. One way to achieve acceptable performance is to focus on classes of simple bugs, such as bugs with single statement fixes, or that match a small set of bug templates. However, it is very difficult to estimate the recall of repair techniques for simple bugs, as there are no datasets about how often the associated bugs occur in code. To fill this gap, we provide a dataset of 153,652 single statement bug-fix changes mined from 1,000 popular open-source Java projects, annotated by whether they match any of a set of 16 bug templates, inspired by state-of-the-art program repair techniques. In an initial analysis, we find that about 33% of the simple bug fixes match the templates, indicating that a remarkable number of single-statement bugs can be repaired with a relatively small set of templates. Further, we find that template fitting bugs appear with a frequency of about one bug per 1,600-2,500 lines of code (as measured by the size of the project's latest version). We hope that the dataset will prove a resource for both future work in program repair and studies in empirical software engineering.

연구 동기 및 목표

  • 생산 코드에서 단일 문장 버그의 빈도와 보편성을 실질적인 데이터로 제공하지 못하는 문제를 해결하기 위해.
  • 실제 단순 버그의 대규모 및 주석 처리된 데이터셋을 제공함으로써 프로그램 복구 기법의 정확한 평가를 가능하게 하기 위해.
  • 실제 환경에서 이러한 버그가 얼마나 자주 발생하는지 측정하여 템플릿 기반 복구 방법의 재현율을 추정하기 위해.
  • 자동 디버깅, 결함 위치 특정, 코드 복구를 위한 기계학습 기반 연구를 지원하기 위해.

제안 방법

  • 버전 제어 이력을 사용하여 1,000개의 인기 있는 오픈소스 자바 Maven 프로젝트를 채굴하여 단일 문장 버그 수정 변경사항을 추출한다.
  • 최신 프로그램 복구 기법에서 영감을 얻은 16개의 사전 정의된 버그 템플릿 중 하나 이상으로 각 수정 사항을 주석 처리한다.
  • 수정 전후 모두 컴파일 가능한 버그에 초점을 맞추며, 그들이 매우 단순한 성격을 지닌다고 해서 '간단한 바보 같은 버그'(SStuBs)로 라벨링한다.
  • 두 가지 데이터셋 버전을 생성한다: Maven 빌드 가능 프로젝트에 제한된 작은 버전(25,539건)과 1,000개 프로젝트를 모두 포함하는 큰 버전(153,652건).
  • 프로젝트 크기(최신 버전 기준)를 사용하여 SStuBs의 1줄당 발생 빈도를 추정한다.
  • 재현 가능성과 재사용을 위해 Zenodo와 공개 GitHub 저장소를 통해 데이터셋을 배포한다.

실험 결과

연구 질문

  • RQ1실제 세계의 오픈소스 자바 프로젝트에서 단일 문장 버그는 얼마나 자주 발생하는가?
  • RQ2단일 문장 버그 수정 중 몇 퍼센트가 사전 정의된 일반적인 복구 템플릿과 일치하는가?
  • RQ3프로젝트 크기(줄 수 기준)가 증가함에 따라 SStuB 발생 빈도는 어떻게 변화하는가?
  • RQ4템플릿 기반 복구 기법이 실세계 데이터에서 얼마나 높은 재현율을 달성할 수 있는가?
  • RQ5이 데이터셋은 기계학습 기반 결함 위치 특정 및 복구 방법 평가에 얼마나 유용한가?

주요 결과

  • 대규모 데이터셋의 153,652개 단일 문장 버그 수정 중 약 33.47%가 16개의 사전 정의된 복구 템플릿 중 하나 이상과 일치한다.
  • 작은 데이터셋 버전의 일치율도 33.04%로 유사하여, 다양한 프로젝트 유형 간 일관된 템플릿 커버리지가 있음을 시사한다.
  • 작은 데이터셋에서는 SStuB가 약 1,600줄의 코드당 한 번, 큰 데이터셋에서는 2,500줄당 한 번 정도 발생한다.
  • 대규모 버전에는 SStuB 인스턴스가 63,923개, 작은 버전에는 10,231개가 포함되어 있어 평가에 매우 풍부한 데이터를 제공한다.
  • Zenodo와 GitHub를 통해 데이터셋이 공개되어 있어 프로그램 복구 및 실증 소프트웨어 공학 분야의 재현 가능한 연구를 지원한다.
  • 일부 프로젝트에 테스트 세트가 존재함에 따라, 테스트 기반 복구 및 결함 위치 특정 기법의 평가가 가능해진다.

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

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

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

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