一句话:提出 ChangeLocator,基于学习模型从崩溃报告桶中自动定位引发崩溃的代码变更。
软件崩溃是严重的缺陷表现,调试费时且困难,定位引发崩溃的代码变更可为修复与自动程序修复提供关键线索。然而,针对由一组崩溃报告(crash report bucket)所反映的崩溃,如何定位仓库中引发该崩溃的软件变更,此前缺乏系统研究。本文首先对崩溃诱因变更(crash-inducing changes)进行实证研究以刻画其特征,进而提出 ChangeLocator:它基于从实证研究中提取的特征构建学习模型,并利用历史上已修复崩溃的数据训练。作者在 NetBeans 的六个发布版本上评估,仅检查推荐列表前 1、5、10 个变更时,可分别定位 44.7%、68.5%、74.5% 的缺陷的诱因变更,显著优于当时最先进方法。
Software crashes are severe manifestations of software bugs. Debugging crashing bugs is tedious and time-consuming. Understanding software changes that induce a crashing bug can provide useful contextual information for bug fixing and is highly demanded by developers. Locating the bug inducing changes is also useful for automatic program repair, since it narrows down the root causes and reduces the search space of bug fix location. However, currently there are no systematic studies on locating the software changes to a source code repository that induce a crashing bug reflected by a bucket of crash reports. To tackle this problem, we first conducted an empirical study on characterizing the bug inducing changes for crashing bugs (denoted as crash-inducing changes). We also propose ChangeLocator, a method to automatically locate crash-inducing changes for a given bucket of crash reports. We base our approach on a learning model that uses features originated from our empirical study and train the model using the data from the historical fixed crashes. We evaluated ChangeLocator with six release versions of Netbeans project. The results show that it can locate the crash-inducing changes for 44.7%, 68.5%, and 74.5% of the bugs by examining only top 1, 5 and 10 changes in the recommended list, respectively. It significantly outperforms the existing state-of-the-art approach.
DOI 原文 ·
@inproceedings{paperbot4432,
title = {ChangeLocator},
author = {Rongxin Wu and Ming Wen and Shing-Chi Cheung and Hongyu Zhang},
booktitle = {ICSE},
year = {2018},
doi = {10.1145/3180155.3182516}
}