CN113064586B - 一种基于抽象语法树增广图模型的代码补全方法 - Google Patents
一种基于抽象语法树增广图模型的代码补全方法 Download PDFInfo
- Publication number
- CN113064586B CN113064586B CN202110515134.7A CN202110515134A CN113064586B CN 113064586 B CN113064586 B CN 113064586B CN 202110515134 A CN202110515134 A CN 202110515134A CN 113064586 B CN113064586 B CN 113064586B
- Authority
- CN
- China
- Prior art keywords
- code
- node
- matrix
- graph
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种基于抽象语法树增广图模型的代码补全方法,包括以下步骤:等待新的代码补全需求,获取待补全位置附近的源代码片段;解析待补全的源代码,将其表示为抽象语法树;遍历抽象语法树上各节点之间的顺序、语法和语义关系,通过带不同标记的有向边连接这些节点,将其表示为图的形式;将以图形式表示的代码进一步编码为矩阵形式;检查是否存在利用图信息的代码补全模型,若不存在,则训练代码补全模型;将编码后的图信息输入代码补全模型,给出预测结果。本发明将程序语言代码表示为图的形式,更好地体现代码各个语法单元之间的顺序、语法和语义关系,从而利用这些信息获得更高的预测准确率。
Description
技术领域
本发明涉及一种基于抽象语法树增广图模型的代码补全方法,属于涉及计算机软件工程技术领域。
背景技术
集成开发环境(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),利用当前代码补全模型,预测用于训练的代码片段的补全选项概率分布;
步骤(9),根据预测的补全选项概率分布和真实补全结果,计算当前模型的训练误差,并根据训练误差对模型参数的梯度对参数进行更新;
步骤(10),计算模型在验证集上的预测损失,如果连续数轮训练过程中模型在验证集上的预测损失不再下降或者训练超过指定的步数,转步骤(11),否则转步骤(8)继续训练模型;
步骤(11),将节点信息矩阵和遮挡矩阵输入已有的代码补全模型,该模型从编码图信息的矩阵中提取代码片段的语义特征,并利用该特征预测下一个补全选项;
步骤(12),等待新的代码补全需求,若存在新需求,转步骤(1),否则代码补全过程结束。
有益效果:现有的技术将代码作为一个token序列或者AST节点序列来进行处理,原本以树形式表示的带有层次结构的语法信息,在序列化的过程中被展平,丢失了大量的语法信息。同时,程序中还有由执行规则定义的大量语义信息,例如同一作用域下的同名变量意味着程序将访问相同的内存位置,这些信息在序列化预测模型中没有得到充分利用。
与现有技术相比,本发明在根据代码上文推荐代码补全选项时,考虑了除token关系以外的丰富的语法信息和语义信息,这些信息能够更好地帮助对代码建模的过程,从而给出更准确的代码补全选项,提高程序开发人员的编程效率。
附图说明
图1为智能代码补全工具的工作过程图;
图2为本发明实施例由未完成代码给出补全项预测的工作流程图;
图3为本发明实施例的将代码以图形式表示的工作流程图;
图4为本发明实施例将图编码为矩阵作为后续神经网络输入的工作流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
智能代码补全工具的工作过程如图1所示。在用户编程过程中,代码补全工具会等待用户触发代码补全需求。当代码补全工具被触发时,它会根据已有的代码上文预测补全选项,并将其展示给用户。用户选择补全选项或执行其它编辑操作后,单次代码补全任务完成,若用户继续编程,代码补全工具会继续等待用户下一次的代码补全需求。
本实施例的代码补全方法的工作流程图如图2所示,基于抽象语法树增广图模型的代码补全方法包括以下步骤:
步骤1,等待新的代码补全需求,获取待补全位置上下若干行的源代码片段;
步骤2,对待补全的源代码片段进行语法解析,将其表示为抽象语法树;
步骤3,遍历抽象语法树,检查各节点之间的顺序、语法和语义关系,通过带不同标记的有向边连接这些节点,将抽象语法树表示为有向图的形式;
步骤4,将有向图编码成矩阵形式,包括节点信息矩阵和多个遮挡矩阵;
步骤5,检查是否存在已训练好的代码补全模型,如果不存在,转步骤(6);如果存在,转入步骤11;
步骤6,收集开源代码组成代码库,从代码库提取待补全代码片段和补全结果,作为训练数据;
步骤7,初始化以图形式表示代码上文的代码补全模型,该模型以自注意力网络为主体,使用路径特征编码和多视角遮挡机制这两种方法利用图信息;
步骤8,利用当前代码补全模型,预测用于训练的代码片段的补全选项概率分布;
步骤9,根据预测的补全选项概率分布和真实补全结果,计算当前模型的训练误差,并根据训练误差对模型参数的梯度对参数进行更新;
步骤10,计算模型在验证集上的预测损失,如果连续数轮训练过程中模型在验证集上的预测损失不再下降或者训练超过指定的步数,转步骤11,否则转步骤8继续训练模型;
步骤11,将节点信息矩阵和遮挡矩阵输入已有的代码补全模型,该模型从编码图信息的矩阵中提取代码片段的语义特征,并利用该特征预测下一个补全选项;
步骤12,等待新的代码补全需求,若存在新需求,转步骤1,否则代码补全过程结束。
本实施例通过将代码上文以图的形式表示,并利用图信息提取代码上文的语义,预测代码补全选项。
不同于大多数代码补全工具将代码以序列形式的表示方法,本发明将代码表示为图的形式,以有向边的形式体现其中的丰富的顺序、语法和语义关系,图3展示了将代码以图形式表示的具体实施例的工作流程。
模块301根据抽象语法树的节点建立一张对应的新图,该新图包含抽象语法树的所有节点,并记录新图与抽象语法树节点间对应关系。在语法解析后,抽象语法树上的所有节点都带有语法单元类型属性,部分节点带有值属性,这些属性也被保留在新图上。待补全节点以“?”标记出现在抽象语法树和新图上。
模块302通过遍历抽象语法树,查找节点间的各种顺序、语法和语义关系。在本发明的实施例中,有以下的序列关系被查找:先序遍历的前一节点、先序遍历的后一节点、先序遍历的前一叶节点、先序遍历的后一叶节点;有以下的语法关系被查找:父节点、第一个子节点、最后的子节点、前一个兄弟节点、后一个兄弟节点;有以下的语义关系被查找:上一个同类型节点、上一个同值节点、上一个同环境节点(两个节点的父节点和祖父节点的类型和值一致)。
模块303根据模块302确定的各种关系,在新图上的对应节点之间添加有向边,根据不同的关系类型,有向边带有不同的标记。在本发明实施例中,有12种不同类型的边(对应模块302的12种不同关系)被添加。
代码片段对应的有向图经过编码后转换为实数矩阵,作为后续神经网络的输入,图4展示了这一过程。
模块401对待补全节点前的各节点的类型和值进行编码。在编码之前,根据对应编程语言的语法单元建立类型词典,根据训练集中的频繁出现的值建立关于值的词典,随后依据类型词典和值词典将每个节点的类型和值编码成对应词典中的序列号。
模块402为一路径特征编码器,从待补全位置对应的节点出发,生成从该点到其他节点的最短路,并记录路径上经过各边的类型。将经过的边按照类型采用热独编码(one-hot encoding)后拼接,作为各个节点的路径特征编码。每个节点的路径特征编码记录了其与待补全节点之间的关系信息。
模块401与402的输出合并为一个节点信息矩阵,矩阵的每一行向量对应图的一个节点,该向量由改节点的类型编码、值编码和路径特征编码拼接而成。
模块403用于生成一组遮挡矩阵,给定一个边类型集Et,如{父节点,前一个兄弟节点,后一个兄弟节点},和一个正整数l,一个遮挡矩阵被定义为:
其中,N为总节点个数,indicator为指示函数(indicator function),vi和vj表示信息矩阵第i和第j行对应的节点,G(Et)表示根据原有向图和边集Et生成的生成子图(spanning subgraph)。
通过设置不同的边类型集Et和正整数l,可以生成不同的遮挡矩阵并组成一组。
本发明使用了经修改的自注意力机制网络Transformer对编码后的图信息进行处理。
该网络首先使用词嵌入矩阵(embedding matrix)将节点的类型与值编号转换为向量,随后与路径编码拼接,为每个节点生成一个初始特征向量,将这些向量组成的矩阵记为而每一个自注意力编码层(TransformerLayer)处理之前的节点特征矩阵,并将其更新,其中,第t层的计算可以形式化地表示为:
其中,下标t,i表示对应第t个编码层的第i个注意力头。每个注意力头的输出headt,i如下计算:
通过定义不同的边类型集Et和正整数l,可以生成不同的遮挡矩阵,在多个注意力头中运用不同的遮挡矩阵,使其关注节点间不同的关系信息,从而更全面的使用图信息,给出更好的预测结果。
在训练过程中,对每个样本,代码补全模型会给出预测并计算交叉熵(categorical cross-entropy)损失,并计算该损失对神经网络各参数的梯度,并以此使用随机梯度下降或其变种方法更新神经网络参数。这一过程将重复直到连续三轮训练中模型在验证集上的预测损失不再下降或更新超过预设的步数,该神经网络连同各参数将保存并用于推断。
在推断过程中,未完成的代码以训练阶段的同样方式进行处理,给出对补全项的概率预测后,按倒序给出推荐结果。
Claims (8)
1.一种基于抽象语法树增广图模型的代码补全方法,其特征在于,包括如下步骤:
步骤(1),等待新的代码补全需求,获取待补全位置附近的源代码片段;
步骤(2),对待补全的源代码片段进行语法解析,将其表示为抽象语法树;
步骤(3),遍历抽象语法树,检查各节点之间的顺序、语法和语义关系,通过带不同标记的有向边连接这些节点,将抽象语法树表示为有向图的形式;
步骤(4),将有向图编码成矩阵形式,包括节点信息矩阵和多个遮挡矩阵;
步骤(5),检查是否存在已训练好的代码补全模型,如果不存在,转步骤(6);如果存在,转入步骤(11);
步骤(6),收集开源代码组成代码库,从代码库提取待补全代码片段和补全结果,作为训练数据;
步骤(7),初始化以图形式表示代码上文的代码补全模型,该模型以自注意力网络为主体,使用路径特征编码和多视角遮挡机制这两种方法利用图信息;
步骤(8),利用当前代码补全模型,预测用于训练的代码片段的补全选项概率分布;
步骤(9),根据预测的补全选项概率分布和真实补全结果,计算当前模型的训练误差,并根据训练误差对模型参数的梯度对参数进行更新;
步骤(10),计算模型在验证集上的预测损失,如果连续数轮训练过程中模型在验证集上的预测损失不再下降或者训练超过指定的步数,转步骤(11),否则转步骤(8)继续训练模型;
步骤(11),将节点信息矩阵和遮挡矩阵输入已有的代码补全模型,该模型从编码图信息的矩阵中提取代码片段的语义特征,并利用该特征预测下一个补全选项;
步骤(12),等待新的代码补全需求,若存在新需求,转步骤(1),否则代码补全过程结束。
2.根据权利要求1所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,将代码以图形式表示的实现过程为:
步骤301,根据抽象语法树的节点建立一张对应的新图,该新图包含抽象语法树的所有节点,并记录新图与抽象语法树节点间对应关系;在语法解析后,抽象语法树上的所有节点都带有语法单元类型属性,部分节点带有值属性,这些属性也被保留在新图上;待补全节点以指定标记出现在抽象语法树和新图上;
步骤302,通过遍历抽象语法树,查找节点间的各种顺序、语法和语义关系;有以下的序列关系被查找:先序遍历的前一节点、先序遍历的后一节点、先序遍历的前一叶节点、先序遍历的后一叶节点;有以下的语法关系被查找:父节点、第一个子节点、最后的子节点、前一个兄弟节点、后一个兄弟节点;有以下的语义关系被查找:上一个同类型节点、上一个同值节点、上一个同环境节点;
步骤303,根据步骤302确定的各种关系,在新图上的对应节点之间添加有向边,根据不同的关系类型,有向边带有不同的标记。
3.根据权利要求1所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,代码片段对应的有向图经过编码后转换为实数矩阵,作为后续神经网络的输入。
4.根据权利要求3所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,代码片段对应的有向图经过编码后转换为实数矩阵的过程为:
步骤401,对待补全节点前的各节点的类型和值进行编码;在编码之前,根据对应编程语言的语法单元建立类型词典,根据训练集中的频繁出现的值建立关于值的词典,随后依据类型词典和值词典将每个节点的类型和值编码成对应词典中的序列号;
步骤402,为一路径特征编码器,从待补全位置对应的节点出发,生成从该节点到其他节点的最短路径,并记录路径上经过各边的类型;将经过的边按照类型采用热独编码后拼接,作为各个节点的路径特征编码;每个节点的路径特征编码记录了其与待补全节点之间的关系信息;
步骤401与步骤402的输出合并为一个节点信息矩阵,矩阵的每一行向量对应图的一个节点,该向量由改节点的类型编码、值编码和路径特征编码拼接而成;
步骤403,用于生成一组遮挡矩阵,给定一个边类型集Et,和一个正整数l,一个遮挡矩阵被定义为:
其中,N为总节点个数,indicator为指示函数,vi和vj表示信息矩阵第i和第j行对应的节点,G(Et)表示根据原有向图和边集Et生成的生成子图;
通过设置不同的边类型集Et和正整数l,生成不同的遮挡矩阵并组成一组。
5.根据权利要求1所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,使用经修改的自注意力机制网络Transformer对编码后的图信息进行处理;
所述经修改的自注意力机制网络首先使用词嵌入矩阵将节点的类型与值编号转换为向量,随后与路径编码拼接,为每个节点生成一个初始特征向量,将这些向量组成的矩阵记为而每一个自注意力编码层处理之前的节点特征矩阵,并将其更新,其中,第t层的计算形式化地表示为:
其中,下标t,i表示对应第t个编码层的第i个注意力头;每个注意力头的输出headt,i如下计算:
6.根据权利要求5所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,通过定义不同的边类型集Et和正整数l,生成不同的遮挡矩阵,在多个注意力头中运用不同的遮挡矩阵,使其关注节点间不同的关系信息。
7.根据权利要求1所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,在训练过程中,对每个样本,代码补全模型会给出预测并计算交叉熵损失,并计算该损失对神经网络各参数的梯度,并以此使用随机梯度下降或其变种方法更新神经网络参数;这一过程将重复直到连续数轮训练中模型在验证集上的预测损失不再下降或更新超过预设的步数,该神经网络连同各参数将保存并用于推断。
8.根据权利要求7所述的基于抽象语法树增广图模型的代码补全方法,其特征在于,在推断过程中,未完成的代码以训练阶段的同样方式进行处理,给出对补全项的概率预测后,按倒序给出推荐结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110515134.7A CN113064586B (zh) | 2021-05-12 | 2021-05-12 | 一种基于抽象语法树增广图模型的代码补全方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110515134.7A CN113064586B (zh) | 2021-05-12 | 2021-05-12 | 一种基于抽象语法树增广图模型的代码补全方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064586A CN113064586A (zh) | 2021-07-02 |
CN113064586B true CN113064586B (zh) | 2022-04-22 |
Family
ID=76568737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110515134.7A Active CN113064586B (zh) | 2021-05-12 | 2021-05-12 | 一种基于抽象语法树增广图模型的代码补全方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113064586B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590129B (zh) * | 2021-07-17 | 2024-05-17 | 西北工业大学 | 一种基于同步反应式构件的代码自动生成方法 |
CN114385178B (zh) * | 2021-12-14 | 2024-07-23 | 厦门大学 | 基于抽象语法树结构信息增强的代码生成方法 |
CN115291854A (zh) * | 2022-07-30 | 2022-11-04 | 华为技术有限公司 | 代码补全方法、装置及设备 |
CN117573084B (zh) * | 2023-08-02 | 2024-04-12 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
CN117573085B (zh) * | 2023-10-17 | 2024-04-09 | 广东工业大学 | 一种基于层次结构特征和序列特征的代码补全方法 |
CN117632106B (zh) * | 2023-11-21 | 2024-07-16 | 广州致远电子股份有限公司 | 代码补全方法、装置、设备以及存储介质 |
CN117648079B (zh) * | 2024-01-29 | 2024-05-14 | 浙江阿里巴巴机器人有限公司 | 任务处理、代码补全、代码问答及任务处理模型训练方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN108595165A (zh) * | 2018-04-25 | 2018-09-28 | 清华大学 | 一种基于代码中间表示的代码补全方法、装置及存储介质 |
CN108664237A (zh) * | 2018-05-14 | 2018-10-16 | 北京理工大学 | 一种基于启发式和神经网络的非api成员推荐方法 |
CN109582352A (zh) * | 2018-10-19 | 2019-04-05 | 北京硅心科技有限公司 | 一种基于双ast序列的代码补全方法及*** |
CN109901829A (zh) * | 2019-01-29 | 2019-06-18 | 深圳点猫科技有限公司 | 一种基于ace扩展的第三方库的代码补全方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11645576B2 (en) * | 2018-04-29 | 2023-05-09 | Microsoft Technology Licensing, Llc. | Code completion for languages with hierarchical structures |
CN110688121A (zh) * | 2019-08-22 | 2020-01-14 | 深圳壹账通智能科技有限公司 | 代码补全方法、装置、计算机装置及存储介质 |
-
2021
- 2021-05-12 CN CN202110515134.7A patent/CN113064586B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN108595165A (zh) * | 2018-04-25 | 2018-09-28 | 清华大学 | 一种基于代码中间表示的代码补全方法、装置及存储介质 |
CN108664237A (zh) * | 2018-05-14 | 2018-10-16 | 北京理工大学 | 一种基于启发式和神经网络的非api成员推荐方法 |
CN109582352A (zh) * | 2018-10-19 | 2019-04-05 | 北京硅心科技有限公司 | 一种基于双ast序列的代码补全方法及*** |
CN109901829A (zh) * | 2019-01-29 | 2019-06-18 | 深圳点猫科技有限公司 | 一种基于ace扩展的第三方库的代码补全方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于统计语言模型的个性化API补全方法研究;马张弛;《中国优秀硕士学位论文全文数据库 信息科技辑》;20210415(第04期);I138-1018 * |
Also Published As
Publication number | Publication date |
---|---|
CN113064586A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113064586B (zh) | 一种基于抽象语法树增广图模型的代码补全方法 | |
CN110018820B (zh) | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 | |
CN112463424B (zh) | 一种基于图的端到端程序修复方法 | |
CN116151132B (zh) | 一种编程学习场景的智能代码补全方法、***及储存介质 | |
CN113761893B (zh) | 一种基于模式预训练的关系抽取方法 | |
CN111680494A (zh) | 相似文本的生成方法及装置 | |
CN115033896B (zh) | 以太坊智能合约漏洞检测方法、装置、***与介质 | |
CN114489669A (zh) | 一种基于图学习的Python语言代码片段生成方法 | |
CN113641819A (zh) | 基于多任务稀疏共享学习的论辩挖掘***及方法 | |
CN112764738A (zh) | 基于多视图程序特征的代码自动生成方法及*** | |
CN113868432A (zh) | 一种用于钢铁制造企业的知识图谱自动构建方法和*** | |
CN108664237B (zh) | 一种基于启发式和神经网络的非api成员推荐方法 | |
CN115146279A (zh) | 程序漏洞检测方法、终端设备及存储介质 | |
CN115048141A (zh) | 一种基于图引导的Transformer模型代码注释自动生成方法 | |
CN113591093A (zh) | 基于自注意力机制的工业软件漏洞检测方法 | |
CN116304748A (zh) | 一种文本相似度计算方法、***、设备及介质 | |
CN116861269A (zh) | 工程领域的多源异构数据融合及分析方法 | |
CN113868422A (zh) | 一种多标签稽查工单问题溯源识别方法及装置 | |
CN112148879B (zh) | 一种自动给代码打数据结构标签的计算机可读存储介质 | |
CN115408506B (zh) | 联合语义解析和语义成分匹配的nl2sql的方法 | |
CN116342167A (zh) | 基于序列标注命名实体识别的智能成本度量方法和装置 | |
CN115495085A (zh) | 一种基于深度学习细粒度代码模板的生成方法及装置 | |
KR102460217B1 (ko) | 인공지능 기반의 예측 판결문 생성 장치, 방법 및 프로그램 | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
CN115935943A (zh) | 一种支持自然语言结构计算的分析框架 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |