针对 JavaScript 程序的协同变更实体调查与推荐
软件工程
2021-02-18 v2 编程语言
摘要
JavaScript(JS)因其灵活性与多用途而成为最流行的编程语言之一,但维护 JS 代码繁琐且易出错。在我们的研究中,我们开展了实证研究以刻画协同变更软件实体(例如函数和变量)之间的关系,并构建了基于机器学习(ML)的方法来在给定开发者代码变更时推荐额外的待编辑实体。具体而言,我们首先爬取了 10 个开源项目中的 14,747 次提交;对于每次提交,我们创建一个或多个变更依赖图(CDGs)以建模协同变更实体之间的引用者-被引用者关系。接下来,我们提取 CDGs 之间的公共子图以定位实体间反复出现的协同变更模式。最后,基于这些模式,我们从协同变更实体中提取代码特征,并训练了一个在给定程序提交时推荐待变更实体的 ML 模型。根据我们的实证调查:(1)三种反复出现的模式普遍存在于所有项目中;(2)80%–90% 的协同变更函数对要么调用相同函数、访问相同变量,要么包含相似语句;(3)我们基于 ML 的方法 CoRec 以高准确率(73%–78%)推荐实体变更。CoRec 补充了先前工作,因为它基于程序语法、文本相似性以及软件历史给出变更建议;在我们的评估中其准确率高于两个现有工具。
引用
@article{arxiv.2102.07877,
title = {Investigating and Recommending Co-Changed Entities for JavaScript Programs},
author = {Zijian Jiang and Hao Zhong and Na Meng},
journal= {arXiv preprint arXiv:2102.07877},
year = {2021}
}