[논문 리뷰] Early Prediction for Merged vs Abandoned Code Changes in Modern Code Reviews
이 논문은 현대 코드 리뷰에서 코드 변경 사항이 조기에 병합될지 또는 기각될지 예측하는 데 LightGBM 기반의 기계학습 모델인 PredCR를 제안한다. 3개의 오픈소스 프로젝트에서 146,612개의 코드 변경 사항을 대상으로, 리뷰어, 저자, 프로젝트, 텍스트, 코드 차원에서 25개의 특징을 사용해 훈련한 PredCR는 평균 AUC 85%를 달성하며, 이는 이전 연구 대비 예측 성능에서 14-23% 향상되었고 신규 기여자에 대한 편향도 감소시켰다.
The modern code review process is an integral part of the current software development practice. Considerable effort is given here to inspect code changes, find defects, suggest an improvement, and address the suggestions of the reviewers. In a code review process, usually, several iterations take place where an author submits code changes and a reviewer gives feedback until is happy to accept the change. In around 12% cases, the changes are abandoned, eventually wasting all the efforts. In this research, our objective is to design a tool that can predict whether a code change would be merged or abandoned at an early stage to reduce the waste of efforts of all stakeholders (e.g., program author, reviewer, project management, etc.) involved. The real-world demand for such a tool was formally identified by a study by Fan et al. [1]. We have mined 146,612 code changes from the code reviews of three large and popular open-source software and trained and tested a suite of supervised machine learning classifiers, both shallow and deep learning based. We consider a total of 25 features in each code change during the training and testing of the models. The best performing model named PredCR (Predicting Code Review), a LightGBM-based classifier achieves around 85% AUC score on average and relatively improves the state-of-the-art [1] by 14-23%. In our empirical study on the 146,612 code changes from the three software projects, we find that (1) The new features like reviewer dimensions that are introduced in PredCR are the most informative. (2) Compared to the baseline, PredCR is more effective towards reducing bias against new developers. (3) PredCR uses historical data in the code review repository and as such the performance of PredCR improves as a software system evolves with new and more data.
연구 동기 및 목표
- 코드 리뷰에서 약 12%의 변경 사항이 여러 차례 반복된 후 기각되는 데 기인한 낭비된 노력을 줄이기 위해.
- 완전한 리뷰 주기가 끝나기 이전에 병합될 가능성이 높은지 또는 기각될 가능성이 높은지 코드 변경 사항을 조기에 예측할 수 있는 도구를 개발하기 위해.
- 이전 연구의 한계, 즉 예측 시점이 늦어지는 것, 역사를 고려하지 못하는 것, 신규 기여자에 대한 편향을 해결하기 위해.
- 통합된 모델에서 리뷰어, 저자, 프로젝트, 텍스트, 코드 특징을 포함시켜 예측 정확도를 향상시키기 위해.
제안 방법
- 저자들은 3개의 대규모 오픈소스 프로젝트(Eclipse, LibreOffice, GerritHub)에서 기반한 Gerrit 기반 코드 리뷰에서 146,612개의 코드 변경 사항을 추출했다.
- 리뷰어(예: 리뷰어 경험, 이전 리뷰 수), 저자(예: 기여 이력), 프로젝트(예: 프로젝트 크기, 리뷰 빈도), 텍스트(예: 패치 메시지 길이, 감성), 코드(예: 변경된 라인 수, 복잡도)의 다섯 차원에서 25개의 특징을 추출했다.
- 6개의 분류기(로지스틱 회귀, SVM, 랜덤 포레스트, XGBoost, LightGBM, 딥 네트워크)를 사용한 지도 학습 접근법을 적용했다.
- 데이터 유출을 방지하고 현실적인 조기 예측 시나리오를 보장하기 위해 종단 간 교차 검증을 사용해 모델을 훈련하고 테스트했다.
- 클래스 불균형 문제는 균형 잔차 손실을 통해 해결하였고, 성능 최적화를 위해 초모수 튜닝을 수행했다.
- PredCR는 AUC 및 기타 지표를 기반으로 최고의 성능을 보인 LightGBM 기반 모델로 선정되었다.
실험 결과
연구 질문
- RQ1PredCR는 Fan 등 [1]의 최신 기술 기준 대비 병합 또는 기각된 코드 변경 사항을 예측하는 데서 성능을 뛰어넘을 수 있는가?
- RQ2리뷰어, 저자, 프로젝트, 텍스트, 코드의 각 특징 차원은 코드 변경 사항 결과 예측에 얼마나 효과적인가?
- RQ3기여 이력이 제한된 신규 기여자에 대한 편향을 PredCR는 얼마나 잘 다루는가?
- RQ4시간이 지남에 따라 더 많은 역사적 데이터가 축적됨에 따라 모델 성능은 어떻게 변화하는가?
- RQ5훈련 데이터가 제한된 신규 프로젝트나 서브프로젝트에 적용했을 때 PredCR의 성능은 얼마나 견고한가?
주요 결과
- PredCR는 평균 AUC 점수 85%를 기록하여 최신 기술 기준(Fan 등 [1]) 대비 상대적으로 14-23% 향상된 성능을 보였다.
- 리뷰어 차원이 가장 정보가 많은 특징 세트로, 예측 성능 향상에 기여했으며, 그 다음으로 저자, 프로젝트, 코드, 텍스트 특징이 이어졌다.
- 기여 이력이 제한된 경우에도 PredCR는 기준 대비 신규 개발자에 대한 편향을 줄였고, 강력한 성능 유지를 유지했다.
- 더 많은 역사적 데이터가 축적됨에 따라 모델 성능이 향상되었으며, 이는 PredCR가 진화하는 코드 리뷰 레포지터리에서 유익함을 얻음을 시사한다.
- 한 프로젝트에서 재학습한 후 다른 프로젝트에 적용했을 때 PredCR는 강력한 성능을 유지하며, 프로젝트 간 이식성과 일반화 능력을 보였다.
- 예측을 각 리비전마다 갱신해도 모델이 효과를 유지하여, 동적인 리뷰 워크플로우에서의 강건성을 입증했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.