深度学习在代码表征中的应用综述
2021-10-28谢春丽
计算机工程与应用 2021年20期
谢春丽,梁 瑶,王 霞
江苏师范大学 计算机科学与技术学院,江苏 徐州 221116
GitHub、Stack Overflow等平台存在着大量的开源项目和源代码片段,开发人员如果能有效地将功能相似的代码引入到自己的项目中,可以大幅度提高软件开发效率。那么,如何在海量源码中快速而准确地找到满足功能和性能需求的源码成为软件工程领域关注的主要任务。除此以外,代码克隆检测、故障定位、代码注释、代码摘要生成、命名推荐等问题也是该领域的研究热点。这几个任务都有一个相同的关键问题,即需要对源代码进行一定的预处理,从中抽取特征进行源代码表征。如图1所示,源代码表征是解决各类问题的第一步,在此基础上设计各类算法,从而完成代码克隆检测、故障定位、摘要生成或其他任务。源代码的表征方式决定了对源代码特征抽取的程度,进而影响后续任务所能检测的精度。

图1 基于深度学习的代码表征框架Fig.1 Code representation framework based on deep learning
根据对源代码信息的利用程度,代码表征方法可以分为基于文本、词汇、语法、语义四个层面:基于文本的表征方式不经任何修饰直接把源代码看作文本/字符;基于词汇的表征方式首先对源代码词法分析,然后把源代码符号序列化;基于语法的表征方式往往从源代码的语法树或者抽象语法树抽取代码语法信息;基于语义的表征方式则进一步从源代码的控制流和数据流等信息中提取隐含的语义信息。这几种不同层次的表征方式各……
登录APP查看全文
