10.3778/j.issn.1673-9418.2005048
代码特征自动提取方法
神经网络在软件工程中的应用极大程度上缓解了传统的人工提取代码特征的压力.已有的研究往往将代码简化为自然语言或者依赖专家的领域知识来提取代码特征,简化为自然语言的处理方法过于简单,容易造成信息丢失,而引入专家制定启发式规则的模型往往过于复杂,可拓展性以及普适性不强.鉴于以上问题,提出了一种基于卷积和循环神经网络的自动代码特征提取模型,该模型借助代码的抽象语法树(AST)来提取代码特征.为了缓解因AST过于庞大而带来的梯度消失问题,对AST进行切割,转换成一个AST序列再作为模型的输入.该模型利用卷积网络提取代码中的结构信息,利用双向循环神经网络提取代码中的序列信息.整个流程不需要专家的领域知识来指导模型的训练,只需要将标注类别的代码作为模型的输入就可以让模型自动地学习如何提取代码特征.应用训练好的分类编码器,在相似代码搜索任务上进行测试,Top1、NDCG、MRR的值分别能达到0.560、0.679和0.638,对比当下前沿的用于代码特征提取的深度学习模型以及业界常用的代码相似检测工具有显著的优势.
代码特征提取、代码分类、程序理解、相似代码搜索
15
TP391(计算技术、计算机技术)
国家重点研发计划;国家自然科学基金;中央高校基本科研业务费专项资金;江苏高校“青蓝工程”
2021-05-08(万方平台首次上网日期,不代表论文的发表时间)
共12页
456-467