[发明专利]一种基于抽象语法树增广图模型的代码补全方法有效

专利信息
申请号: 202110515134.7 申请日: 2021-05-12
公开(公告)号: CN113064586B 公开(公告)日: 2022-04-22
发明(设计)人: 黎铭;汤闻誉 申请(专利权)人: 南京大学
主分类号: G06F8/30 分类号: G06F8/30;G06F8/33;G06F8/41;G06F16/901;G06N3/04;G06N3/08
代理公司: 南京乐羽知行专利代理事务所(普通合伙) 32326 代理人: 李玉平
地址: 210023 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 抽象 语法 增广 模型 代码 方法
【说明书】:

发明公开一种基于抽象语法树增广图模型的代码补全方法,包括以下步骤:等待新的代码补全需求,获取待补全位置附近的源代码片段;解析待补全的源代码,将其表示为抽象语法树;遍历抽象语法树上各节点之间的顺序、语法和语义关系,通过带不同标记的有向边连接这些节点,将其表示为图的形式;将以图形式表示的代码进一步编码为矩阵形式;检查是否存在利用图信息的代码补全模型,若不存在,则训练代码补全模型;将编码后的图信息输入代码补全模型,给出预测结果。本发明将程序语言代码表示为图的形式,更好地体现代码各个语法单元之间的顺序、语法和语义关系,从而利用这些信息获得更高的预测准确率。

技术领域

本发明涉及一种基于抽象语法树增广图模型的代码补全方法,属于涉及计算机软件工程技术领域。

背景技术

集成开发环境(Integrated Development Environment,IDE)在现代软件工程中起着重要作用,而代码补全是其中最广泛使用的功能之一。智能代码补全功能根据已有的代码,列出了下一个可能的token(词法单元,例如变量和方法),可以有效地为软件开发人员带来便利。

传统的代码完成方法使用类型信息和编程历史记录来给出补全项预测。类型信息用于过滤可能的补全选项,而编程历史用于对其进行排序。但是,上述方法对于某些动态类型化的语言(例如Python和JavaScript)具有局限性,并且其准确性也不令人满意。因此,基于机器学习的方法被设计为利用代码上下文(通常只有上文)的进行更好的预测。

基于编程语言与自然语言存在一些相似之处的认识,一些研究采用统计语言模型对代码进行补全,如以n元语法(N-gram),递归神经网络(Recurrent Neural Network,RNN)等序列预测模型对补全项进行预测。在这些模型中,源代码段被预处理为token序列或抽象语法树(AST)节点序列,然后由序列预测模型处理。根据预测模型给出的概率,对代码补全选项进行排序。

然而,基于序列预测模型的代码补全方法忽视了代码中的一些重要信息。除了token的顺序之外,代码中还蕴含了丰富的语法信息(如AST上各节点的层次结构)和语义信息(如相同名称的标识符)。如果这些信息被合理并充分地利用,代码补全模型可以给出更高的预测准确率。

发明内容

发明目的:针对现有技术中存在的问题与不足,本发明提供一种利用丰富语法语义信息的代码补全方法,将源代码通过语法解析和语义分析转换为图的形式,以有向边的形式表示各种不同的顺序、语法和语义关系。后使用一种经修改的自注意力机制神经网络(Self-attention network),对以图形式表示的代码进行处理,给出更准确的预测结果。

技术方案:一种基于抽象语法树增广图模型的代码补全方法,通过以下步骤,为程序开发人员提供更好的代码补全选项:

步骤(1),等待新的代码补全需求,获取待补全位置上下若干行的源代码片段;

步骤(2),对待补全的源代码片段进行语法解析,将其表示为抽象语法树;

步骤(3),遍历抽象语法树,检查各节点之间的顺序、语法和语义关系,通过带不同标记的有向边连接这些节点,将抽象语法树表示为有向图的形式;

步骤(4),将有向图编码成矩阵形式,包括节点信息矩阵和多个遮挡矩阵;

步骤(5),检查是否存在已训练好的代码补全模型,如果不存在,转步骤(6);如果存在,转入步骤(11);

步骤(6),收集开源代码组成代码库,从代码库提取大量的待补全代码片段和补全结果,作为训练数据;

步骤(7),初始化以图形式表示代码上文的代码补全模型,该模型以自注意力网络为主体,使用路径特征编码和多视角遮挡机制这两种方法利用图信息;

步骤(8),利用当前代码补全模型,预测用于训练的代码片段的补全选项概率分布;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110515134.7/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top