CN113434145A - 一种基于抽象语法树通路上下文的程序代码相似性度量方法 - Google Patents

一种基于抽象语法树通路上下文的程序代码相似性度量方法 Download PDF

Info

Publication number
CN113434145A
CN113434145A CN202110642424.8A CN202110642424A CN113434145A CN 113434145 A CN113434145 A CN 113434145A CN 202110642424 A CN202110642424 A CN 202110642424A CN 113434145 A CN113434145 A CN 113434145A
Authority
CN
China
Prior art keywords
syntax tree
abstract syntax
path
node
vector
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.)
Pending
Application number
CN202110642424.8A
Other languages
English (en)
Inventor
江波
张挺
匡新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
East China Normal University
Original Assignee
East China Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by East China Normal University filed Critical East China Normal University
Priority to CN202110642424.8A priority Critical patent/CN113434145A/zh
Publication of CN113434145A publication Critical patent/CN113434145A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/20Education
    • G06Q50/205Education administration or guidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Educational Technology (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Educational Administration (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • General Business, Economics & Management (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于抽象语法树通路上下文的代码相似性度量方法,所述方法具体包括以下步骤:对程序代码片段进行解析,得到相应的抽象语法树;对上述获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路上下文的编码:对上述获得的抽象语法树终端节点之间的通路进行编码,实现向量化代码片段的相似性度量:将上述获得的代码向量,用余弦相似性进行代码的相似性比较。本发明方法可面向Python、Java等语言,基于抽象语法树通路上下文的代码相似性度量方法,解决了目前存在的缺乏兼顾程序代码的结构与语义两方面的程序表示技术的问题。

Description

一种基于抽象语法树通路上下文的程序代码相似性度量方法
技术领域
本发明属于智能教辅系统中的程序表示技术领域,涉及一种基于抽象语法树通路上下文的程序代码相似性度量方法。
背景技术
智能教辅系统(Intelligent Tutoring System,ITS)是通过基于人工智能的理论和技术来模拟真实的教学过程,使得计算机能够部分替代教师为学习者提供教学和辅导功能的系统。在面向编程的ITS中,学习者在编码过程中常常会遇到各种问题,对于初学者来说,通常情况下,他们是无法自己解决在编程中出现的问题,因此在编码时需要实时向他们提供有用的提示。程序自动提示生成的前提是对程序代码有过分析,由于程序具有很强的结构性,上下文之间的依赖间隔可能会很长,并且代码段中包含了自定义标识符,因此程序的表示至关重要。然而,基于序列的表示方法实现简单快捷,但是忽略了程序的结构特性;基于结构的表示方法解决了基于序列的方法的缺陷,但是最终模型的复杂程度巨大;基于执行过程的方法可以方便了解程序的执行过程。目前缺乏兼顾程序代码的结构与语义两方面的程序表示技术。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供一种基于抽象语法树通路上下文的程序代码相似性度量方法。该方法可以面向python、java等程序语言,利用程序的底层表示技术—抽象语法树来表征程序,并从抽象语法树中提取终端节点到终端节点的通路(path),通过编码向量化,获取向量表示,使用基于抽象语法树通路上下文的程序表示方法,这样的表示方法兼顾程序代码的结构与语义两方面内容,接着将获取到的通路经过数值化,通过神经网络学习程序的向量表示,利用余弦相似性对程序进行相似性比较。
本发明提出了一种基于抽象语法树通路上下文的代码相似性度量方法,所述方法包括如下步骤:
步骤一、构建抽象语法树:对程序代码片段进行解析,得到相应的抽象语法树;
步骤二、遍历抽象语法树:对步骤一中获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路;
步骤三、通路上下文的编码:对步骤二获得的抽象语法树终端节点之间的通路进行编码,实现向量化;
步骤四、代码片段的相似性度量:将步骤三中编码后的代码向量,用余弦相似性进行代码的相似性比较。
所述步骤一具体为:源代码首先经过lib-0.5.jar架包解析生成抽象语法树asts.csv、节点类型node_types.csv和词素tokens.csv这三个文件,在命令行加入—storagedot后,会生成关于抽象语法树的dot文件和描述程序代码的文件description.csv,获得所需要的抽象语法树。
所述步骤二具体为:从语义上讲,单条抽象语法树路径表示代码的两个具体元素逻辑连接,比如常量与变量、常量与运算符或者是变量和运算符之间的连接;根据抽象语法树的规模大小,提取抽象语法树中一条或多条通路,当多条通路组合起来,表示整棵树,以此有效地获取代码片段的语义;本发明利用lib-0.5.jar架包,并且对通路进行长度和宽度的限制,控制抽象语法树通路数量,遍历抽象语法树,得到抽象语法树通路上下文,生成node_types.csv、tokens.csv、paths.csv和path_contexts.csv这四个文件。
步骤三中,所述通路的编码方法基于词表形式,所述词表包括词素标识符、节点类型标识符、通路标识符和通路上下文标识符。
步骤四中,所述代码片段的相似性度量具体包括如下步骤:
步骤4.1、将抽象语法树的通路上下文三元组分为节点node和路径path两个部分,所述节点是指模型训练期间得到的抽象语法树终端叶节点的值,所述路径是指抽象语法树通路的集合。将所有的节点和路径都表示成一个相同维度的向量,即
Figure BDA0003107557670000021
Figure BDA0003107557670000022
其中,node_vec是指模型训练期间得到的抽象语法树终端叶节点;path_vec是指抽象语法树通路的集合;d表示向量的维度;|node|和|path|表示抽象语法树中叶节点和通路的数量;d的维度需要根据经验来调整,受训练时间、模型复杂性的限制,通路和终端结点值的向量维度设为相同或不同。
步骤4.2、一条AST通路pi=(xs,p,xt)的上下文变量ci由两个节点向量和一个通路向量联结而成的d维向量,即:
Figure BDA0003107557670000023
其中,xs=val(start(pi)),表示与通路pi的起始节点关联的值;xt=val(end(pi)),表示与通路pi的末尾节点关联的值;3d表示node_vec,path_vec和node_vec组成的d维向量。
步骤4.3、对于一个编程任务T,给定一个参考的解决方案的向量v0,与学习者提交的代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量:
Figure BDA0003107557670000024
本发明还提供了一种实现上述相似性度量方法的系统,所述系统包括:程序向量获取模型和相似性比较模型。
所述程序向量获取模型用于将给定任意数量的通路上下文向量,聚合为单个向量。该模型需要学习得到通路向量表示。
所述相似性比较模型用于给定一个向量v0,与代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量。
本发明的有益效果包括:本发明提供了一种抽象语法树通路表示技术和一种基于抽象语法树通路表示的代码相似性度量方法。
本发明提供了一种面向Python、java等语言的、基于抽象语法树通路上下文的代码相似性度量方法,解决了目前存在的缺乏兼顾程序代码的结构与语义两方面的程序表示技术的问题。
附图说明
图1为本发明构建抽象语法树流程图。
图2为本发明遍历抽象语法树流程图。
图3为本发明实施例相似性比较图。
图4为本发明的技术路线图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明提出了一种基于抽象语法树通路上下文的代码相似性度量方法,该方法通过构造程序代码的抽象语法树,然后利用树结构上的遍历通路上下文表示不同程序,再将抽象语法树进行编码得到程序代码的向量表示,最后通过计算代码向量的余弦相似性进行代码间相似性的判定,所述方法具体包括以下步骤:
步骤一、构建抽象语法树:对程序代码片段进行解析,得到相应的抽象语法树;
步骤二、遍历抽象语法树:对步骤一中获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路;
步骤三、通路上下文的编码:对步骤二获得的抽象语法树终端节点之间的通路进行编码,实现向量化;
步骤四、代码片段的相似性度量:将步骤三中编码后的代码向量,用余弦相似性进行代码的相似性比较。
所述步骤一具体为:源代码首先经过lib-0.5.jar架包解析生成抽象语法树asts.csv、节点类型node_types.csv和词素tokens.csv这三个文件,在命令行加入—storagedot后,会生成关于抽象语法树的dot文件和描述程序代码的文件description.csv,获得所需要的抽象语法树。
所述步骤二具体为:从语义上讲,单条抽象语法树路径表示代码的两个具体元素逻辑连接,比如常量与变量、常量与运算符或者是变量和运算符之间的连接;根据抽象语法树的规模大小,提取抽象语法树中一条或多条通路,当多条通路组合起来,表示整棵树,以此有效地获取代码片段的语义;本发明利用lib-0.5.jar架包,并且对通路进行长度和宽度的限制,控制抽象语法树通路数量,遍历抽象语法树,得到抽象语法树通路上下文,生成node_types.csv、tokens.csv、paths.csv和path_contexts.csv这四个文件。
步骤三中,所述通路的编码方法基于词表形式,所述词表包括词素标识符、节点类型标识符、通路标识符和通路上下文标识符。
步骤四中,所述代码片段的相似性度量具体包括如下步骤:
步骤4.1、将抽象语法树的通路上下文三元组分为节点node和路径path两个部分,所述节点是指模型训练期间得到的抽象语法树终端叶节点的值,所述路径是指抽象语法树通路的集合。将所有的节点和路径都表示成一个相同维度的向量,即
Figure BDA0003107557670000041
Figure BDA0003107557670000042
其中,node_vec是指模型训练期间得到的抽象语法树终端叶节点;path_vec是指抽象语法树通路的集合;d表示向量的维度;|node|和|path|表示抽象语法树中叶节点和通路的数量;d的维度需要根据经验来调整,受训练时间、模型复杂性的限制,通路和终端结点值的向量维度设为相同或不同。
步骤4.2、一条AST通路pi=(xs,p,xt)的上下文变量ci由两个节点向量和一个通路向量联结而成的d维向量,即:
Figure BDA0003107557670000043
其中,xs=val(start(pi)),表示与通路pi的起始节点关联的值;xt=val(end(pi)),表示与通路pi的末尾节点关联的值;3d表示node_vec,path_vec和node_vec组成的d维向量。
步骤4.3、对于一个编程任务T,给定一个参考的解决方案的向量v0,与学习者提交的代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量:
Figure BDA0003107557670000044
本发明还提供了一种实现上述相似性度量方法的系统,所述系统包括:程序向量获取模型和相似性比较模型。
所述程序向量获取模型用于将给定任意数量的通路上下文向量,聚合为单个向量。该模型需要学习得到通路向量表示。
所述相似性比较模型用于给定一个向量v0,与代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量。
实施例
本实施例是代码相似性度量方法的具体应用。
步骤一、构建抽象语法树:
所述抽象语法树(AST)是一种基于树的结构,表示程序的语法结构。AST不能代表程序源代码的完整内容,某些信息如代码格式、括号和语法结构的确切形式将被省略,但是程序代码的结构又携带了程序的语义信息及其他信息。AST中的每个节点都代表程序的语法单元例如变量、操作或逻辑运算符,下一个节点代表与该节点的关系。
一个程序代码片段的抽象语法树(Abstract Syntax Tree,AST)可以表示为一个元组<N,T,X,s,δ,val>。其中,N是非叶节点的集合;T是叶节点集合;X是叶节点的值(变量名或者常量)的集合;s∈N,表示是根节点;δ:N→(N∪T)*表示将非叶节点映射到其孩子节点列表的函数;val:T→X是将叶节点映射到关联值的函数。
为了方便起见,定义π:(N∪T)→N表示δ的反函数,给定一个节点,函数π返回该节点的父节点,这样,当且仅当后者在前者的孩子节点列表时,使得对于每两个终端节点或非终端节点y1,y2∈(N∪T),一个是另一个的父节点:
Figure BDA0003107557670000051
对起始元素而言,其父元素没有定义。
图1是一个编程任务及解析程序得到抽象语法树的示例。首先将程序代码片段进行解析,得到相应的抽象语法树。
步骤二、遍历抽象语法树:
由于抽象语法树的树形结构难以直接用于比较衡量不同语法树的差异。本发明提出了一种基于AST通路的程序表示方法。所述AST通路是AST中终端节点之间的路径,从理论上来说,一条路径可以连接AST的任意节点,但本发明使用两个终端节点之间的节点序列作为通路。从一个终端开始,在另一个终端结束,并经过该路径中的中间的非终端节点,这些非终端节点是两个终端的共同祖先。AST通路是一个长度为k的序列{n1d1,…,nkdk,nk+1}。其中,i∈[1,…,k+1]:ni∈(N∪T)是终端或非终端节点;而i∈[1,…,k]:di∈{↑,↓}是在抽象语法树中的移动方向,向上移动或者向下移动。如果di=↑,那么:ni+1=π(ni);如果di=↓,那么:ni=π(ni+1)。使用start(p)来表示n1,使用end(p)表示ni+1。例如图1中的一条抽象语法树通路可以表示成如下形式:
DEF↑FUNC_DEF↓SUITE↓SIMPLE_STMT↓RETURN↓
在语义上,单个AST通路表示代码的两个具体元素之间的逻辑连接,用一组通路上下文表示整棵树可以有效地捕获代码的语义。将通路上下文(Path-context)定义为由AST通路和末端节点的值(如n1和nk+1)组成。通常,相关方法考虑跨任意AST节点(例如终端及其祖先)之间的通路上下文,但为简单起见,本实施例将以下定义基于跨终端之间的路径上下文。图2是遍历抽象语法树得到抽象语法树通路上下文的示例。
给定AST通路p,该通路的上下文是一个三元组<xs,p,xt>。其中,xs=val(start(p)),xt=val(end(p))分别是与通路p的起始节点和末尾节点关联的值。通路上下文描述了AST中的两个节点,并且这两个节点的语法路径相同。同样地,图2中的程序语句return'Hello AgainWorld!'可以表示成如下形式:
<return,(RETURN↑SIMPLE_STMT↓STRING↓),helloagainworld>
步骤三、通路上下文的编码:
由于上述的抽象语法树通路无法直接输入到神经网络中进行训练,因此需要经过适当的编码。下表给出了基于词表的形式,该形式的目的是以数字来编码相关数据。由于程序代码的结构化性质以及有限数量的唯一节点类型和词素(token),许多标识符和通路可能会在大型的挖掘任务中频繁出现,通过将每个词素、节点类型、通路、通路上下文与唯一标识符相关联,从而避免重复存储数据。
表1通路上下文的编码
Figure BDA0003107557670000061
(a)词素标识符表
Figure BDA0003107557670000062
Figure BDA0003107557670000071
(b)节点类型标识符表
Figure BDA0003107557670000072
(c)通路标识符表
Figure BDA0003107557670000073
(d)通路上下文标识符表
步骤四、代码相似性度量:
首先,将抽象语法树的通路上下文三元组分为节点(node)和路径(path)两个部分,这里的节点是指模型训练期间得到的抽象语法树终端叶节点的值,路径是指抽象语法树通路的集合。将所有的节点和路径都表示成一个相同维度的向量,即:
Figure BDA0003107557670000074
其中,node_vec是指模型训练期间得到的抽象语法树终端叶节点;path_vec是指抽象语法树通路的集合;d表示向量的维度;|node|和|path|表示抽象语法树中叶节点和通路的数量;d的维度需要根据经验来调整,受训练时间、模型复杂性的限制,通路和终端结点值的向量维度设为相同或不同。
一条AST通路pi=(xs,p,xt)的上下文变量ci由两个节点向量和一个通路向量联结而成的d维向量,即:
Figure BDA0003107557670000075
其中,xs=val(start(pi)),表示与通路pi的起始节点关联的值;xt=val(end(pi)),表示表示与通路pi的末尾节点关联的值;3d表示抽象语法树中叶节点和通路的数量。
余弦相似性是通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。基于上述工作得到的程序代码段的向量,用余弦相似性来对程序作相似性比较。
对于一个编程任务T,给定一个参考的解决方案的向量v0,与学习者提交的代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量:
Figure BDA0003107557670000081
图3是给定的程序与程序集中的程序进行解析、提取、向量表示等一系列操作后,将两个程序进行相似性比较,得出二者的相似性度量值。
具体地,将步骤三得到通路上下文输入神经网络,输出一个二维的向量表示;利用余弦相似性计算两个程序代码的相似性。
图四是本发明的技术路线,对每一个程序样例进行解析成抽象语法树,进一步在抽象语法树的基础上提取通路,用一条或多条通路的组合来表示这个程序样例。通过对通路及抽象语法树中的词素进行编码处理,作为神经网络的输入,学习得到每个程序快照的向量表示,再通过计算每个程序样例与其他程序样例进行对比计算余弦相似度。
综上所述,本发明提供了一种面向Python、java等语言的、基于抽象语法树通路上下文的代码相似性度量方法,解决了目前存在的缺乏兼顾程序代码的结构与语义两方面的程序表示技术。
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

Claims (7)

1.一种基于抽象语法树通路上下文的代码相似性度量方法,其特征在于,所述方法利用程序的底层表示技术-抽象语法树来表征程序,并从抽象语法树中提取终端节点到终端节点的通路,通过编码向量化,获取向量表示,利用余弦相似性对程序进行相似性比较;所述方法包括以下步骤:
步骤一、构建抽象语法树:对程序代码片段进行解析,得到相应的抽象语法树;
步骤二、遍历抽象语法树:对步骤一中获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路;
步骤三、通路上下文的编码:对步骤二获得的抽象语法树终端节点之间的通路进行编码,实现向量化;
步骤四、代码片段的相似性度量:将步骤三中编码后的代码向量,用余弦相似性进行代码的相似性比较。
2.如权利要求1所述的方法,其特征在于,所述步骤一具体为:源代码首先经过lib-0.5.jar架包解析生成抽象语法树asts.csv、节点类型node_types.csv和词素tokens.csv这三个文件,在命令行加入-storage dot后,生成关于抽象语法树的dot文件和描述程序代码的文件description.csv,获得所需要的抽象语法树。
3.如权利要求1所述的方法,其特征在于,所述步骤二具体为:从语义上讲,单条抽象语法树路径表示代码的两个具体元素逻辑连接;根据抽象语法树的规模大小,提取抽象语法树中一条或多条通路,当多条通路组合起来,表示整棵树,以此有效地获取代码片段的语义;利用lib-0.5.jar架包,对通路进行长度和宽度的限制,控制抽象语法树通路数量,遍历抽象语法树,得到抽象语法树通路上下文,生成node_types.csv、tokens.csv、paths.csv和path_contexts.csv这四个文件。
4.如权利要求1所述的方法,其特征在于,步骤三中,所述通路的编码方法基于词表形式,所述词表包括词素标识符、节点类型标识符、通路标识符和通路上下文标识符。
5.如权利要求1所述的方法,其特征在于,步骤四中,所述代码片段的相似性度量具体包括如下步骤:
步骤4.1、将抽象语法树的通路上下文三元组分为节点node和路径path两个部分;所述节点是指模型训练期间得到的抽象语法树终端叶节点的值,所述路径是指抽象语法树通路的集合;
将所有的节点和路径都表示成一个相同维度的向量,即
Figure FDA0003107557660000011
Figure FDA0003107557660000012
其中,node_vec是指模型训练期间得到的抽象语法树终端叶节点;path_vec是指抽象语法树通路的集合;d表示向量的维度;|node|和|path|表示抽象语法树中叶节点和通路的数量;
步骤4.2、一条AST通路pi=(xs,p,xt)的上下文变量ci由两个节点向量和一个通路向量联结而成的d维向量,即:
Figure FDA0003107557660000021
其中,xs=val(start(pi)),表示与通路pi的起始节点关联的值;xt=val(end(pi)),表示与通路pi的末尾节点关联的值;3d表示node_vec,path_vec和node_vec组成的d维向量;
步骤4.3、对于一个编程任务T,给定一个参考的解决方案的向量v0,与学习者提交的代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量:
Figure FDA0003107557660000022
6.一种实现如权利要求1-5之任一项所述相似性度量方法的系统,其特征在于,所述系统包括:程序向量获取模型、相似性比较模型。
7.如权利要求6所述的系统,其特征在于,所述程序向量获取模型用于将给定任意数量的通路上下文向量,聚合为单个向量,所述模型需要学习得到通路向量表示;
所述相似性比较模型用于给定一个向量v0,与代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量。
CN202110642424.8A 2021-06-09 2021-06-09 一种基于抽象语法树通路上下文的程序代码相似性度量方法 Pending CN113434145A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110642424.8A CN113434145A (zh) 2021-06-09 2021-06-09 一种基于抽象语法树通路上下文的程序代码相似性度量方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110642424.8A CN113434145A (zh) 2021-06-09 2021-06-09 一种基于抽象语法树通路上下文的程序代码相似性度量方法

Publications (1)

Publication Number Publication Date
CN113434145A true CN113434145A (zh) 2021-09-24

Family

ID=77755495

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110642424.8A Pending CN113434145A (zh) 2021-06-09 2021-06-09 一种基于抽象语法树通路上下文的程序代码相似性度量方法

Country Status (1)

Country Link
CN (1) CN113434145A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115221061A (zh) * 2022-07-22 2022-10-21 中国电信股份有限公司 测试代码生成方法、装置、存储介质及电子设备
CN117289919A (zh) * 2023-11-24 2023-12-26 浙江口碑网络技术有限公司 一种数据处理方法、装置及电子设备
WO2024017100A1 (zh) * 2022-07-19 2024-01-25 华为云计算技术有限公司 获取代码片段的方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
CN107169358A (zh) * 2017-05-24 2017-09-15 中国人民解放军信息工程大学 基于代码指纹的代码同源性检测方法及其装置
US20190324731A1 (en) * 2019-06-28 2019-10-24 Intel Corporation Methods and apparatus for evolving computer programs
CN111240687A (zh) * 2020-01-09 2020-06-05 华东师范大学 源代码静态分析装置
US10809983B1 (en) * 2018-11-23 2020-10-20 Amazon Technologies, Inc. Using an abstract syntax tree for generating names in source code
CN111813444A (zh) * 2020-07-10 2020-10-23 北京思特奇信息技术股份有限公司 一种分析源代码相似性的方法、系统和电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
CN107169358A (zh) * 2017-05-24 2017-09-15 中国人民解放军信息工程大学 基于代码指纹的代码同源性检测方法及其装置
US10809983B1 (en) * 2018-11-23 2020-10-20 Amazon Technologies, Inc. Using an abstract syntax tree for generating names in source code
US20190324731A1 (en) * 2019-06-28 2019-10-24 Intel Corporation Methods and apparatus for evolving computer programs
CN111240687A (zh) * 2020-01-09 2020-06-05 华东师范大学 源代码静态分析装置
CN111813444A (zh) * 2020-07-10 2020-10-23 北京思特奇信息技术股份有限公司 一种分析源代码相似性的方法、系统和电子设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
OTHERS: ""Preliminary application of code2vec"", 《HTTPS://WWW.CODETD.COM/EN/ARTICLE/12829009》 *
URI ALON等: ""code2vec: Learning Distributed Representations of Code"", 《PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES》 *
刘玉涛: ""可视化通用数据分析实验平台的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 *
厚点: ""code2vec的初步应用"", 《HTTPS://BLOG.CSDN.NET/LOCKHOU/ARTICLE/DETAILS/113854491》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024017100A1 (zh) * 2022-07-19 2024-01-25 华为云计算技术有限公司 获取代码片段的方法、装置及存储介质
CN115221061A (zh) * 2022-07-22 2022-10-21 中国电信股份有限公司 测试代码生成方法、装置、存储介质及电子设备
CN115221061B (zh) * 2022-07-22 2024-03-22 中国电信股份有限公司 测试代码生成方法、装置、存储介质及电子设备
CN117289919A (zh) * 2023-11-24 2023-12-26 浙江口碑网络技术有限公司 一种数据处理方法、装置及电子设备
CN117289919B (zh) * 2023-11-24 2024-02-20 浙江口碑网络技术有限公司 一种数据处理方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN113434145A (zh) 一种基于抽象语法树通路上下文的程序代码相似性度量方法
CN109299284B (zh) 一种基于结构信息与文本描述的知识图谱表示学习方法
Paaßen et al. The continuous hint factory-providing hints in vast and sparsely populated edit distance spaces
CN111930906A (zh) 基于语义块的知识图谱问答方法及装置
CN111259632A (zh) 一种基于语义对齐的树结构数学应用题求解方法及系统
CN109857458B (zh) 基于ANTLR的AltaRica 3.0的扁平化的转化方法
CN110471835A (zh) 一种基于电力信息系统代码文件的相似度检测方法及系统
CN115470232A (zh) 模型训练和数据查询方法、装置、电子设备和存储介质
Price et al. An Exploration of Data-Driven Hint Generation in an Open-Ended Programming Problem.
CN110737469A (zh) 一种功能粒度上基于语义信息的源代码相似度评估方法
CN111159424B (zh) 标注知识图谱实体的方法,装置,存储介质及电子设备
CN112579600A (zh) 一种基于车载问答的数据处理方法和装置
CN116955558A (zh) 基于知识图谱推理的地学数据集问答方法及系统
CN116011548A (zh) 一种多知识图谱问答模型训练方法、系统及存储介质
CN114625759B (zh) 模型训练方法、智能问答方法、设备、介质及程序产品
CN110286891A (zh) 一种基于代码属性张量的程序源代码编码方法
CN113010676B (zh) 一种文本知识提取方法、装置及自然语言推断系统
Azadmanesh et al. Concept-driven generation of intuitive explanations of program execution for a visual tutor
Haynes et al. Entailment for specification refinement
Verdejo Building tools for LOTOS symbolic semantics in Maude
Hu et al. An ANTLR-based flattening framework for AltaRica 3.0 model
Aras et al. Development of Programming Learning Environment With Compiler Techniques
CN114036122B (zh) 基于联邦学习技术的分布式系统日志解析方法
Bilanová et al. About possibilities of applying logical analysis of natural language in computer science
Hattori et al. An extended educational system for programming and its evaluation

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210924

WD01 Invention patent application deemed withdrawn after publication