基于图卷积神经网络的函数自动命名①
2021-09-10王堃,李征,刘勇
计算机系统应用 2021年8期
王 堃,李 征,刘 勇
(北京化工大学 信息科学与技术学院,北京 100029)
1 引言
函数自动命名是根据现有源代码自动生成可读性强的自然语言来描述函数的功能.在软件维护过程中,开发者往往需要花费大量的时间去理解一段代码所对应的功能.其中,一种重要的方式便是通过阅读函数名来快速的了解代码的功能,从而节约开发者的时间.尽管开发者可以通过函数名理解函数的功能,但是在实际开发过程中往往这些函数名并不是完整的或具有时效性的.这类问题可能会误导开发者,导致开发者花费大量的时间来理解程序,影响开发效率.现有工作表明:“函数名大多是常规编程语言中聚集函数行为的最小命名单位,因此函数名是函数抽象的基石.”[1].因此,在软件开发过程中,给定一段代码,如何自动生成一个正确并且相关联的函数名变得尤为重要.
随着深度学习技术的快速发展,许多研究人员尝试使用深度学习模型来解决这个问题,例如sequenceto-sequence 模型[2-5].Allamanis 等[6]将代码解析成token 序列,然后利用卷积神经网络(CNN)对token 序列进行建模,通过卷积操作提取代码特征,并引入注意力机制学习代码序列与函数名之间的关键信息.但是,使用token 序列仅仅是代码的展开,模型很难去学习到代码中的结构信息,同时token 序列过长导致模型很难学习到其中的语义信息.为了解决这个问题,Alon 等[7,8]通过将代码转化为抽象语法树(AST),并根据每一个叶节点(变量名、方法名等) 从AST中提……
登录APP查看全文
