基于失败场景匹配的运行时异常修复Stack Overflow帖子推荐
软件工程
2020-09-23 v1
摘要
在现代软件开发实践中,使用Stack Overflow(SO)等在线问答论坛获取解决程序缺陷及其他开发问题的指导十分常见。运行时异常(RE)是SO上被积极讨论的一类重要缺陷。本工作中,我们提出一种称为MAESTRO的技术与原型工具,可自动推荐与开发者代码中给定Java RE最相关的SO帖子。MAESTRO将开发者代码中产生异常的程序场景与SO帖子中讨论的场景进行比较,并返回匹配度最高的帖子。为有效提取并比较异常场景,MAESTRO首先利用帖子中的回答代码片段,将帖子问题代码片段中的若干行归因为导致异常的责任行,然后将这些行与开发者代码在各自的抽象程序图(APG)表示上进行比较。APG是本文提出的抽象语法树的简化与抽象衍生体,可在丢弃诸多底层语法或语义差异的同时,对高层程序结构所体现的功能进行有效比较。我们在从GitHub前500个Java项目中提取的78个Java RE实例基准上评估MAESTRO,结果表明MAESTRO能在71%的实例中返回与异常实例高度相关或一定程度相关的SO帖子,而基于前沿技术的四种竞争工具仅在8%–44%的实例中返回相关帖子。我们还对10名Java开发者开展了MAESTRO用户体验研究,参与者判定MAESTRO在80%的实例中报告了高度相关或一定程度相关的帖子。某些情况下,该帖子甚至优于参与者手动找到的帖子。
引用
@article{arxiv.2009.10174,
title = {Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching},
author = {Sonal Mahajan and Negarsadat Abolhassani and Mukul R. Prasad},
journal= {arXiv preprint arXiv:2009.10174},
year = {2020}
}