返回
Recommending Variable Names for Extract Local Variable Refactorings
DOI:10.1145/3712191.png)
摘要
En 中文
提取局部变量是重构中最常用的方法之一。它常被用来将复杂表达式的出现替换为新引入变量的简单访问,该变量由原始复杂表达式初始化。因此,大多数集成开发环境(IDE)和重构工具为这种重构提供自动化支持,例如为新提取的变量建议名称。然而,我们发现这些IDE推荐的约70%的名称与开发者手动构建的不同,给开发者增加了额外的重命名负担,并提供有限的帮助。在本文中,我们介绍了VarNamer,一种旨在为提取局部变量重构推荐变量名称的自动化方法。通过大规模实证研究,我们确定了关键上下文,如变量初始化和同质变量(其初始化与新建变量相同),这些对于组成变量名称很有用。利用这些见解,我们通过程序静态分析技术(如词法分析、语法分析、控制流分析和数据流分析)开发了一组启发式规则,并采用数据挖掘技术(即FP-growth算法)有效推荐变量名称。值得注意的是,我们的一些启发式规则已成功集成到Eclipse中,现随IDE的最新版本分发。在Java应用程序中包含27,158个真实世界的提取局部变量重构的数据集上对VarNamer进行评估,证明了其优于当前最先进的IDE。具体来说,与Eclipse相比,VarNamer将完全匹配的概率显著提高了52.6%,与IntelliJ IDEA相比提高了40.7%。我们还使用在C++项目中进行的真实世界提取局部变量重构评估了所提出的方法,结果表明该方法在除Java之外的编程语言中也能达到相当的性能。这可能表明VarNamer的通用性。最后,我们设计和进行了一项用户研究,以调查VarNamer对开发者生产力的影响。用户研究的结果表明,我们的方法可以将重构速度提高27.8%,并减少49.3%的推荐变量名称编辑量。
Keyword:
extract local variable
variable name recommendation
static analysis
data mining
refactoring

