一种基于上下文的方法名一致性检查与建议的自动化方法
软件工程
2021-03-02 v1
摘要
软件项目中具有误导性的方法名会混淆开发者,可能导致软件缺陷并影响代码可理解性。本文中,我们提出 DeepName,一种基于上下文的深度学习方法来检测方法名不一致并为方法建议恰当名称。其关键出发点在于“-show me your friends, I'll tell you who you are-”的理念。与最先进方法不同,除方法体外,我们还考虑当前所研究方法与其他方法的交互,包括调用者与被调用者方法,以及同一包围类中的兄弟方法。上下文中程序实体名称的子词序列被提取并用作基于 RNN 的编码器-解码器的输入,以生成当前方法的表示。我们修改该 RNN 模型以集成拷贝机制与我们新开发的称为非拷贝机制的组件,以强调某个子词不被拷贝而在当前生成的方法名中跟随当前子词的可能性。我们在包含超过 1400 万方法的大规模数据集上进行了若干实验来评估 DeepName。对于一致性检查,DeepName 相对最先进方法在召回率、精确率和 F 值上分别提升 2.1%、19.6% 和 11.9%。对于名称建议,DeepName 相对最先进方法在精确率(1.8%–30.5%)、召回率(8.8%–46.1%)和 F 值(5.2%–38.2%)上均有提升。为评估 DeepName 的实用性,我们在活跃项目中检测不一致方法并建议新方法名。在 50 个 pull request 中,12 个被合并入主分支。总计,在 50 例中的 30 例,团队成员认同我们建议的方法名比当前名称更有意义。
引用
@article{arxiv.2103.00269,
title = {A Context-based Automated Approach for Method Name Consistency Checking and Suggestion},
author = {Yi Li and Shaohua Wang and Tien N. Nguyen},
journal= {arXiv preprint arXiv:2103.00269},
year = {2021}
}