一种基于知识图谱的程序自动修正方法与流程

    专利2022-07-08  72


    本发明涉及一种程序自动修正方法,特别是一种基于知识图谱的程序自动修正方法。



    背景技术:

    当前,程序设计的自动化开发技术正在从原来的组件化、模型驱动方法向基于深度学习、语义驱动的方法转变。目前,现有已经存在通过自然语言处理生成所需的程序片段的方法,然而这些方法需要神经网络的大规模计算支持,没有统一的标准,代码知识图谱的逻辑结构、构造方法和自动化实际应用并没有得到很好的解决,并能不提供一种完整的编程手段,程序员在编写程序时,需要非常严谨,不能有缺失和出错,一旦编写程序出现问题,就无法进行正常的运行,无法自动修正,程序编写复杂、麻烦,效率较低,人工劳动量大。

    因此,现有的程序处理,存在编写复杂、效率较低、人工劳动量大的问题。



    技术实现要素:

    本发明的目的在于,提供一种基于知识图谱的程序自动修正方法。本发明可以对有问题的骨架程序自动修整得到完整的程序,具有简化程序编写、提高程序编写效率、减少人工劳动量的特点。

    本发明的技术方案:一种基于知识图谱的程序自动修正方法,包括包括以下步骤:

    s1.获取网络上开放的源代码,通过代码知识图谱构建程序对获取的源代码进行分析,生成代码知识图谱;

    s2.编写允许出现缺失或者错误的骨架程序;

    s3.通过代码补全程序对骨架程序进行分析,利用代码知识图谱对骨架程序进行修正和补充,得到正常执行的完整程序。

    前述的一种基于知识图谱的程序自动修正方法中,s1中,所述代码知识图谱为rdf三元组结构,rdf三元组结构由代码实体和代码关系组成,代码实体为程序设计语言的所有语法成份,代码关系包括引用、包含、项、归属、值、别名、功能、输入和输出。

    前述的一种基于知识图谱的程序自动修正方法中,s1中,代码知识图谱的生成方法包括以下步骤:

    (1).取代码图谱构建程序中的包和命名空间,生成三元组为:<包名,项,包>;对于存在上下级关系的包名,生成三元组为:<上级包名,包含,下级包名^下级包名...^下级包名>;

    (2).取代码图谱构建程序中的类名和类型部分,生成三元组<类名,项,类>;并根据类所在的包名生成三元组为:<包名,包含,类名>;

    (3).取代码图谱构建程序中全局变量的名称、类型、初始值,分别生成三元组为:<变量名,归属,类型>、<变量名,项,变量>、<变量名,缺省,缺省值>;

    (4).取代码图谱构建程序中属性变量的名称、类型、初始值、及其所属的类名,分成生成三元组为:<变量名,归属,类型>、<变量名,项,属性>、<变量名,缺省,缺省值>、<类名,包含,变量名>;

    (5).取代码图谱构建程序中函数的名称、函数说明、类名、返回参数,分别生成三元组为:<函数名,项,函数>,<函数名,功能,函数说明>,<类名,包含,函数名>,<函数名,输入,传入参数1^传入参数2...>,<函数名,输出,返回说明>,<返回说明,归属,返回类型>,<传入参数名,归属,参数类型>;

    (6).按照代码知识图谱的组成规则对每一个开放的源代码生成代码知识图谱;

    (7).对任意一个代码知识图谱,规定其中任意一个三元组r到任意一个节点c的距离d=e-x,其中x为三元组r的三个节点到节点c所经过路径中三元组个数的最小值。

    前述的一种基于知识图谱的程序自动修正方法中,所述代码知识图谱的组成规则包括以下步骤:

    (1).令r为一个实体关系构成的三元组<el,r,er>,构成代码知识图谱的基本元件,其中,er为导出实体节点,el为导入实体节点,r为关系节点;

    (2).令r1=<e1l,r1,e1r>,r2=<e1r,r2,e2r>,则r1和r2构成一个关系链复合图;

    (3).令r1=<e1l,r1,e1r>,r2=<r1,r2,e2r>,则r1和r2构成一个关系过渡复合图;

    (4).令ri=<el,r,eir>,则r=<el,r,e1r|e2r|...|enr>构成一个动态导出节点复合图;若令ri=<eil,r,er>,则r=<e1l|e2l|...|enl,r,er>构成一个动态导入节点复合图;

    (5).令ri=<el,r,eir>,则r=<el,r,e1r^e2r^...^enr>构成一个超导出节点复合图;若令ri=<eil,r,er>,则r=<e1l^e2l^...^enl,r,er>构成一个超导入节点复合图;

    (6).令r1=<e1l,r1,e1r>,r2=<e2l,r2,e2r>,则r=<r1,r,r2>构成一个超节点复合图。

    前述的一种基于知识图谱的程序自动修正方法中,s2中,骨架程序的编写包括:

    (1).定义全局变量:给定变量的名称;

    (2).定义类型:给定类型的名称、属性的名称和函数的名称。

    前述的一种基于知识图谱的程序自动修正方法中,s3具体包括以下步骤:

    (1).将骨架程序构造成骨架知识图谱;

    (2).在代码知识图谱中寻找与骨架知识图谱相似的子图,令{g1,g2,...,gn}为所有代码知识图谱,t为骨架知识图谱,{c1,c2,...,cm}为有缺失或者错误的变量、函数或者类型的名称,对每一个ci,分别计算其与gj的相似度sij;

    (3).对每一个ci,选择与骨架知识图谱相似度sij最大的图谱作为候选代码知识图谱;

    (4).对每一个ci,用候选代码知识图谱中的项目替换变量、函数或者类型的错误项和缺失项,得到正常执行的完整程序。

    前述的一种基于知识图谱的程序自动修正方法中,所述步骤(2)中,相似度sij的计算方法包括以下步骤:

    (a).初始化sij的值为0;

    (b).在gj中寻找是否有节点命名为ci,若没有则记sij=0,否则执行下一步;

    (c).在gj中查找所有包含gj的三元组集,记为pj,在t中查找所有包含ci的三元组集,记为q;

    (d).令y=pj∩q,u=q-pj∩q,若y为空集,则记sij=0,否则对于y中的每一个三元组yk,记其中dk为三元组yk到ci的距离,对于u中的每一个三元组ul,其中fl为三元组ul到ci的距离,sij=d/(d f)。

    前述的一种基于知识图谱的程序自动修正方法中,所述步骤(4)中,候选代码知识图谱中的替换方法包括以下步骤:

    (a).对骨架程序中的全局变量v,检查候选代码知识图谱中是否存在三元组<v,项,变量>,若不存在,则默认全局变量v的类型为字符串,若存在,则检查是否存在<v,归属,v1>,若存在,则将v1作为全局变量v的类型,否则,将字符串作为全局变量v的类型;检查候选代码知识图谱中是否存在三元组<v,缺省,v2>,若存在,则将v2作为全局变量v的缺省值;

    (b).对骨架程序中的类型t,检查候选代码知识图谱中是否存在三元组<t,项,类>,或者存在t1,使得存在三元组<t1,项,类>和三元组<t1,别名,t>,若存在,将t改为t1;

    (c).对于骨架程序中类型t1中的属性变量p,检查候选代码知识图谱中是否存在三元组<p,归属,p1>、<p,项,属性>、<p,缺省,p2>、<t1,包含,p>,若存在,则将p1作为属性变量p的类型,p2作为属性变量p的缺省值;

    (d).对于骨架程序中类型t1中的函数f,检查候选知识图谱中是否存在三元组<f,项,函数>、<f,功能,f1>、<t1,包含,f>、<f,输入,fp1^fp2...^fpz>、<f,输出,f2>、<f2,归属,返回类型>、<fp1,归属,fpt1>,<fp2,归属,fpt2>、....或者<fpz,归属,fptz>,若存在,则将f1作为函数f的功能说明,fp1,fp2...,fpz作为函数f的输入参数,fp1,fp2...,fpz对应的类型分别为fpt1,fpt2,...,fptz,f2作为函数f的输出类型。

    与现有技术相比,本发明允许程序员编写有缺失、有错误的骨架程序,进一步通过代码知识图谱的构造和学习,自动对骨架程序进行修正,从而得到真实可以运行的程序,实现渐进式的程序设计自动化,提高了初始的骨架程序的容错率,可以简化初期程序的编写,降低程序员的编写负担,减少程序员的编写工作量,从而可以提高程序编写的效率。

    因此,本发明可以对有问题的骨架程序自动修整得到完整的程序,具有简化程序编写、提高程序编写效率、减少人工劳动量的特点。

    附图说明

    图1是本发明的流程示意图;

    图2是代码知识图谱的基本元件示意图;

    图3是rdf三元组结构的关系复合链结构示意图;

    图4是rdf三元组结构的关系过渡复合结构示意图;

    图5是rdf三元组结构的动态导出复合结构示意图;

    图6是rdf三元组结构的超导出节点复合结构示意图;

    图7是rdf三元组结构的超节点复合结构示意图;

    图8是代码知识图谱a;

    图9是代码知识图谱b;

    图10是骨架知识图谱。

    具体实施方式

    下面结合实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。

    实施例。

    一种基于知识图谱的程序自动修正方法,如图1所示,具体包括以下步骤:

    s1.获取网络上开放的源代码,通过代码知识图谱构建程序对获取的源代码进行分析,生成代码知识图谱;

    s2.编写允许出现缺失或者错误的骨架程序;

    s3.通过代码补全程序对骨架程序进行分析,利用代码知识图谱对骨架程序进行修正和补充,得到正常执行的完整程序。

    所述s1.中,所述代码知识图谱为rdf三元组结构。所述rdf三元组结构由代码实体和代码关系组成。代码实体为程序设计语言的所有语法成份,代码关系包括引用、包含、项、归属、值、别名、功能、输入和输出。

    代码知识图谱的组成规则包括:

    (1).令r为一个实体关系构成的三元组<el,r,er>,构成代码知识图谱的基本元件,如图2所示。其中,er为导出实体节点,el为导入实体节点,r为关系节点。

    (2).令r1=<e1l,r1,e1r>,r2=<e1r,r2,e2r>,则r1和r2构成一个关系链复合图,如图3所示。

    (3).令r1=<e1l,r1,e1r>,r2=<r1,r2,e2r>,则r1和r2构成一个关系过渡复合图,如图4所示。

    (4).令ri=<el,r,eir>,i属于{1,2,...,n},则r=<el,r,e1r|e2r|...|enr>构成一个动态导出节点复合图。如图5所示,它表示在不同环境下,会有不同的三元组项成立。类似的,若令ri=<eil,r,er>,i属于{1,2,...,n},则r=<e1l|e2l|...|enl,r,er>构成一个动态导入节点复合图。

    (5).令ri=<el,r,eir>,i属于{1,2,...,n},则r=<el,r,e1r^e2r^...^enr>构成一个超导出节点复合图。如图6所示,它表示所有ri总是同时成立。类似的,若令ri=<eil,r,er>,i属于{1,2,...,n},则r=<e1l^e2l^...^enl,r,er>构成一个超导入节点复合图。

    (6).令r1=<e1l,r1,e1r>,r2=<e2l,r2,e2r>,则r=<r1,r,r2>构成一个超节点复合图,如图7所示。

    s1中,代码知识图谱的具体生成方法包括以下步骤:

    (1).取代码图谱构建程序中的包和命名空间(简称包名),生成三元组为:<包名,项,包>;对于存在上下级关系的包名,生成三元组为:<上级包名,包含,下级包名^下级包名...^下级包名>;

    (2).取代码图谱构建程序中的类名和类型部分,生成三元组为:<类名,项,类>;并根据类所在的包名生成三元组为:<包名,包含,类名>;若程序中的类包含注释,则根据注释的意义分别生成三元组为:<类名,别名,注释>,<类名,时间戳,注释>,<类名,作者,注释>,<类名,版本,注释>;

    (3).取代码图谱构建程序中全局变量的名称(简称变量名)、类型、初始值,分别生成三元组为:<变量名,归属,类型>、<变量名,项,变量>、<变量名,缺省,缺省值>;

    (4).取代码图谱构建程序中属性变量的名称(简称变量名)、类型、初始值、及其所属的类名,分成生成三元组为:<变量名,归属,类型>、<变量名,项,属性>、<变量名,缺省,缺省值>、<类名,包含,变量名>;

    (5).取代码图谱构建程序中函数的名称(简称函数名)、函数说明、类名、返回参数,包括返回参数的返回类型、返回说明、传入参数(可以有多个),包括每个参数的类型、参数名,分别生成三元组为:<函数名,项,函数>,<函数名,功能,函数说明>,<类名,包含,函数名>,<函数名,输入,传入参数1^传入参数2...>,<函数名,输出,返回说明>,<返回说明,归属,返回类型>,<传入参数名,归属,参数类型>;

    (6).对上述(1)-(5)步骤得到的所有三元组,按照代码知识图谱的组成规则对每一个开放的源代码生成代码知识图谱;

    (7).在任意一个代码知识图谱中,规定其中任意一个三元组r到任意一个节点c的距离d=e-x,其中x为三元组r的三个节点到节点c所经过路径中三元组个数的最小值。

    所述s2中,骨架程序的编写是按照python程序设计语言的语法编写,但是允许编写过程中出现缺失和错误,具体包括以下内容:

    (1).定义全局变量:程序设计语言要求变量给出类型、名称、约束和初始值,而在骨架程序中只要给出变量的名称就可以,其余的通过后续的修正和补充方法得到。

    (2).定义类型:程序设计语言要求类型给出类型的名称、约束、属性(包含属性类型、名称、约束、初始值)、函数(输入、输出)。在骨架程序中只要给出类型的名称,属性的名称、函数的名称,其余的通过后续的修正和补充方法得到。

    编写好的骨架程序因为缺失或者错误并不能执行,需要通过对缺失或者错误进行修正,因此s3具体包括以下步骤:

    (1).将骨架程序按照代码知识图谱的生成方法构造骨架知识图谱。

    (2).在代码知识图谱中寻找与骨架知识图谱相似的子图,令{g1,g2,...,gn}为所有代码知识图谱,t为骨架知识图谱,{c1,c2,...,cm}为有缺失或者错误的变量、函数、类型的名称。对每一个ci,i属于{1,2,...,m},分别计算其与gj,j属于{1,2,...,n}的相似度sij。

    sij的计算方法如下:

    (a).初始化sij的值为0;

    (b).在gj中寻找是否有节点命名为ci,若没有则记sij=0,否则执行下一步;

    (c).在gj中查找所有包含gj的三元组集,记为pj,包含ci的三元组集是指以ci导入节点或导出节点或者关系节点的三元组集,在t中查找所有包含ci的三元组集,记为q;

    (d).令y=pj∩q,u=q-pj∩q。若y为空集,则记sij=0,否则对于y中的每一个三元组yk,k属于{1,2,...,k},k为y中元素的个数。记其中dk为三元组yk到ci的距离。对于u中的每一个三元组ul,l属于{1,2,...,l},其中fl为三元组ul到ci的距离。sij=d/(d f)。

    (3).对每一个ci,i属于{1,2,...,m},选择与骨架知识图谱相似度sij最大的图谱作为候选代码知识图谱;

    (4).对每一个ci,i属于{1,2,...,m},用候选代码知识图谱中的项目替换变量、函数和类型的错误项和缺失项,得到正常执行的完整程序。候选代码知识图谱中的替换方法包括以下步骤:

    (a).对骨架程序中的全局变量v,检查候选代码知识图谱中是否存在三元组<v,项,变量>,若不存在,则默认全局变量v的类型为字符串,若存在,则检查是否存在<v,归属,v1>,若存在,则将v1作为全局变量v的类型,否则,将字符串作为全局变量v的类型;检查候选代码知识图谱中是否存在三元组<v,缺省,v2>,若存在,则将v2作为全局变量v的缺省值。

    (b).对骨架程序中的类型t,检查候选代码知识图谱中是否存在三元组<t,项,类>,或者存在t1,使得存在三元组<t1,项,类>和三元组<t1,别名,t>,若存在,将t改为t1。

    (c).对于骨架程序中类型t1中的属性变量p,检查候选代码知识图谱中是否存在三元组<p,归属,p1>、<p,项,属性>、<p,缺省,p2>、<t1,包含,p>,若存在,则将p1作为属性变量p的类型,p2作为属性变量p的缺省值。

    (d).对于骨架程序中类型t1中的函数f,检查候选知识图谱中是否存在三元组<f,项,函数>、<f,功能,f1>、<t1,包含,f>、<f,输入,fp1^fp2...^fpz>、<f,输出,f2>、<f2,归属,返回类型>、<fp1,归属,fpt1>,<fp2,归属,fpt2>、....或者<fpz,归属,fptz>,若存在,则将f1作为函数f的功能说明,fp1,fp2...,fpz作为函数f的输入参数,fp1,fp2...,fpz对应的类型分别为fpt1,fpt2,...,fptz,f2作为函数f的输出类型。

    实际操作如下:

    图8和图9分别是代码图谱构建程序生成的代码知识图谱a和代码知识图谱b。

    现有一段骨架程序:

    type账号=<id,账号,密码,有效期>;

    type用户=<姓名,电话>

    global账户库;

    functionlogin(账号,密码){}

    对以上程序按照本发明方法构造骨架知识图谱,如图10所示。

    骨架程序中没有给定id,账号,密码,有效期的类型和约束,没有给定姓名,联系电话的类型和约束,也没有给定用户库的类型,以及login的参数和结果类型。

    对这些缺失的内容按照上述方法计算相似度,选取相似度大的图谱进行匹配,匹配相似度计算结果和修补内容如下表所示:

    骨架修正后的程序如下:

    type账号=<id:整数,账号:字符串,密码:字符串,有效期:有效期>;

    type用户=<姓名:string,电话:string>

    global用户库:集合<用户>=null;

    functionlogin(账号:字符串,密码:字符串):布尔{}

    该程序是可以正常执行无报错的完整程序。


    技术特征:

    1.一种基于知识图谱的程序自动修正方法,其特征在于:包括包括以下步骤:

    s1.获取网络上开放的源代码,通过代码知识图谱构建程序对获取的源代码进行分析,生成代码知识图谱;

    s2.编写允许出现缺失或者错误的骨架程序;

    s3.通过代码补全程序对骨架程序进行分析,利用代码知识图谱对骨架程序进行修正和补充,得到正常执行的完整程序。

    2.根据权利要求1所述的一种基于知识图谱的程序自动修正方法,其特征在于:s1中,所述代码知识图谱为rdf三元组结构,rdf三元组结构由代码实体和代码关系组成,代码实体为程序设计语言的所有语法成份,代码关系包括引用、包含、项、归属、值、别名、功能、输入和输出。

    3.根据权利要求1所述的一种基于知识图谱的程序自动修正方法,其特征在于:s1中,代码知识图谱的生成方法包括以下步骤:

    (1).取代码图谱构建程序中的包和命名空间,生成三元组为:<包名,项,包>;对于存在上下级关系的包名,生成三元组为:<上级包名,包含,下级包名^下级包名...^下级包名>;

    (2).取代码图谱构建程序中的类名和类型部分,生成三元组<类名,项,类>;并根据类所在的包名生成三元组为:<包名,包含,类名>;

    (3).取代码图谱构建程序中全局变量的名称、类型、初始值,分别生成三元组为:<变量名,归属,类型>、<变量名,项,变量>、<变量名,缺省,缺省值>;

    (4).取代码图谱构建程序中属性变量的名称、类型、初始值、及其所属的类名,分成生成三元组为:<变量名,归属,类型>、<变量名,项,属性>、<变量名,缺省,缺省值>、<类名,包含,变量名>;

    (5).取代码图谱构建程序中函数的名称、函数说明、类名、返回参数,分别生成三元组为:<函数名,项,函数>,<函数名,功能,函数说明>,<类名,包含,函数名>,<函数名,输入,传入参数1^传入参数2...>,<函数名,输出,返回说明>,<返回说明,归属,返回类型>,<传入参数名,归属,参数类型>;

    (6).按照代码知识图谱的组成规则对每一个开放的源代码生成代码知识图谱;

    (7).对任意一个代码知识图谱,规定其中任意一个三元组r到任意一个节点c的距离d=e-x,其中x为三元组r的三个节点到节点c所经过路径中三元组个数的最小值。

    4.根据权利要求3所述的一种基于知识图谱的程序自动修正方法,其特征在于:所述代码知识图谱的组成规则包括以下步骤:

    (1).令r为一个实体关系构成的三元组<el,r,er>,构成代码知识图谱的基本元件,其中,er为导出实体节点,el为导入实体节点,r为关系节点;

    (2).令r1=<e1l,r1,e1r>,r2=<e1r,r2,e2r>,则r1和r2构成一个关系链复合图;

    (3).令r1=<e1l,r1,e1r>,r2=<r1,r2,e2r>,则r1和r2构成一个关系过渡复合图;

    (4).令ri=<el,r,eir>,则r=<el,r,e1r|e2r|...|enr>构成一个动态导出节点复合图;若令ri=<eil,r,er>,则r=<e1l|e2l|...|enl,r,er>构成一个动态导入节点复合图;

    (5).令ri=<el,r,eir>,则r=<el,r,e1r^e2r^...^enr>构成一个超导出节点复合图;若令ri=<eil,r,er>,则r=<e1l^e2l^...^enl,r,er>构成一个超导入节点复合图;

    (6).令r1=<e1l,r1,e1r>,r2=<e2l,r2,e2r>,则r=<r1,r,r2>构成一个超节点复合图。

    5.根据权利要求1所述的一种基于知识图谱的程序自动修正方法,其特征在于:s2中,骨架程序的编写包括:

    (1).定义全局变量:给定变量的名称;

    (2).定义类型:给定类型的名称、属性的名称和函数的名称。

    6.根据权利要求1所述的一种基于知识图谱的程序自动修正方法,其特征在于:s3具体包括以下步骤:

    (1).将骨架程序构造成骨架知识图谱;

    (2).在代码知识图谱中寻找与骨架知识图谱相似的子图,令{g1,g2,...,gn}为所有代码知识图谱,t为骨架知识图谱,{c1,c2,...,cm}为有缺失或者错误的变量、函数或者类型的名称,对每一个ci,分别计算其与gj的相似度sij;

    (3).对每一个ci,选择与骨架知识图谱相似度sij最大的图谱作为候选代码知识图谱;

    (4).对每一个ci,用候选代码知识图谱中的项目替换变量、函数或者类型的错误项和缺失项,得到正常执行的完整程序。

    7.根据权利要求6所述的一种基于知识图谱的程序自动修正方法,其特征在于:所述步骤(2)中,相似度sij的计算方法包括以下步骤:

    (a).初始化sij的值为0;

    (b).在gj中寻找是否有节点命名为ci,若没有则记sij=0,否则执行下一步;

    (c).在gj中查找所有包含gj的三元组集,记为pj,在t中查找所有包含ci的三元组集,记为q;

    (d).令y=pj∩q,u=q-pj∩q,若y为空集,则记sij=0,否则对于y中的每一个三元组yk,记其中dk为三元组yk到ci的距离,对于u中的每一个三元组ul,其中fl为三元组ul到ci的距离,sij=d/(d f)。

    8.根据权利要求6所述的一种基于知识图谱的程序自动修正方法,其特征在于:所述步骤(4)中,候选代码知识图谱中的替换方法包括以下步骤:

    (a).对骨架程序中的全局变量v,检查候选代码知识图谱中是否存在三元组<v,项,变量>,若不存在,则默认全局变量v的类型为字符串,若存在,则检查是否存在<v,归属,v1>,若存在,则将v1作为全局变量v的类型,否则,将字符串作为全局变量v的类型;检查候选代码知识图谱中是否存在三元组<v,缺省,v2>,若存在,则将v2作为全局变量v的缺省值;

    (b).对骨架程序中的类型t,检查候选代码知识图谱中是否存在三元组<t,项,类>,或者存在t1,使得存在三元组<t1,项,类>和三元组<t1,别名,t>,若存在,将t改为t1;

    (c).对于骨架程序中类型t1中的属性变量p,检查候选代码知识图谱中是否存在三元组<p,归属,p1>、<p,项,属性>、<p,缺省,p2>、<t1,包含,p>,若存在,则将p1作为属性变量p的类型,p2作为属性变量p的缺省值;

    (d).对于骨架程序中类型t1中的函数f,检查候选知识图谱中是否存在三元组<f,项,函数>、<f,功能,f1>、<t1,包含,f>、<f,输入,fp1^fp2...^fpz>、<f,输出,f2>、<f2,归属,返回类型>、<fp1,归属,fpt1>,<fp2,归属,fpt2>、....或者<fpz,归属,fptz>,若存在,则将f1作为函数f的功能说明,fp1,fp2...,fpz作为函数f的输入参数,fp1,fp2...,fpz对应的类型分别为fpt1,fpt2,...,fptz,f2作为函数f的输出类型。

    技术总结
    本发明公开了一种基于知识图谱的程序自动修正方法,包括包括以下步骤:S1.获取网络上开放的源代码,通过代码知识图谱构建程序对获取的源代码进行分析,生成代码知识图谱;S2.编写允许出现缺失或者错误的骨架程序;S3.通过代码补全程序对骨架程序进行分析,利用代码知识图谱对骨架程序进行修正和补充,得到正常执行的完整程序。本发明可以对有问题的骨架程序自动修整得到完整的程序,具有简化程序编写、提高程序编写效率、减少人工劳动量的特点。

    技术研发人员:陈海波;韩咏男;田丰喻
    受保护的技术使用者:浙江理工大学
    技术研发日:2020.12.02
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23217.html

    最新回复(0)