一种代码生成方法以及装置与流程

专利2022-06-29  136


本发明实施例涉及移动通信的业务支撑技术领域,尤其涉及一种代码生成方法以及装置。



背景技术:

任何一个企业级的web软件项目,代码量一般都在几十万行甚至更多;大部分项目架构师采用mvc架构设计,即表现层、控制层、业务层和数据层进行了分开设计。企业为了缩短项目开发周期、提升产品质量,采用敏捷开发模式进行项目管理。在此背景下,为了提高开发效率以及软件代码的复用率、降低开发成本,同时解决开发人员代码不规范的问题,采用代码生成工具协助项目开发,是众多web软件项目必不可少的工具。

目前比较流行的持久层开发框架主要是hibernate和mybatis框架,两种框架代码生成器根据业务数据模型自动生成pojo、dao、server类文件,如图1所示。这两种框架都依赖配置文件,由人工管理维护配置文件。配置内容主要分为:数据库相关环境配置、目标代码配置、业务数据模型配置。数据库相关环境配置包括数据库驱动包、驱动类、url、用户名、密码。目标代码配置包括:插件类配置、bean代码目录、dao代码目录、数据操作配置文件目录、server代码目录。业务数据模型配置包括表名、表空间等。

综上所述,新建项目模块、新增数据表模型时,必须手工修改代码生成器依赖的配置文件,然后再执行代码生成器。由于配置文件的内容较多且复杂,因此,在手工修改代码的时候容易出现配错或是漏配的情况,需要一种可自动生成代码的生成器,避免在配置过程中出现配错或漏配。



技术实现要素:

针对现有技术中存在的技术问题,本发明实施例提供一种代码生成方法以及装置。

第一方面,本发明实施例提供一种代码生成方法,包括:

获取输入的任务模型数据;

将所述任务模型数据代入预先建立的代码生成器模型进行训练;

输出所述任务模型数据对应的代码。

第二方面,本发明实施例提供一种代码生成装置,包括:

获取单元,用于获取输入的任务模型数据;

训练单元,用于将所述任务模型数据代入预先建立的代码生成器模型进行训练;

输出单元,用于输出所述任务模型数据对应的代码。

第三方面,本发明实施例提供一种代码生成装置,包括:基础管理模块、模型训练模块和服务应用模块,其中,所述服务应用模块包括上述装置所包括的获取单元、训练单元和输出单元。

第四方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。

第五方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。

本发明实施例提供的代码生成方法及装置,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术的代码框架的结构示意图;

图2为本发明实施例提供的代码生成方法的流程示意图;

图3为本发明一实施例提供的代码生成方法的流程示意图;

图4为本发明实施例提供的代码生成器模型训练过程的示意图;

图5为本发明实施例提供的代码生成装置的结构示意图;

图6为本发明实施例提供的代码生成装置的结构示意图;

图7为本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图2为本发明实施例提供的代码生成方法的流程示意图,如图2所示,所述方法包括:

s101、获取输入的任务模型数据;

s102、将所述任务模型数据代入预先建立的代码生成器模型进行训练;

s103、输出所述任务模型数据对应的代码。

本发明实施例提供一种代码生成方法,获取输入的任务模型数据,并对所述任务模型数据进行预处理,去除非ascii字符和标注,其中任务模型数据可以是簇、类或表等;将所述任务模型数据代入到预先建立的代码生成器模型中进行训练,其中,预先建立的代码生成器中预先存储了针对不同任务模型数据的生成器模型;根据不同的任务模型数据,输出所述任务模型数据对应的代码。

本发明实施例提供的代码生成方法,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

具体地,所述将所述任务模型数据代入预先建立的代码生成器模型进行训练,具体为:

提取所述任务模型数据的特征数据;

根据所述任务模型数据的特征数据判断所述任务模型数据的操作行为;

根据所述输入的任务模型数据和所述操作行为,对所述代码生成器模型进行训练。

在上述实施例的基础上,所述将所述任务模型数据代入预先建立的代码生成器模型进行训练,具体为:

神经网络感知器感知到当前输入的任务模型数据,并对输入的任务模型数据进行特征提取与表示;神经网络控制器根据获取的数据特征判知何种操作,例如对输入的数据需要进行排序等;神经网络行为器对输入的数据记性实际的变换行为,形成中间结果,如此反复,直到神经网络控制器决定终止操作,此时得到的结果就是程序对应输出的结果,并将输出的业务代码存储到代码仓库中。

本发明实施例提供的代码生成方法,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

可选地,所述代码生成器模型采用如下步骤建立:

获取标注的训练数据;

提取所述训练数据的特征数据;

根据所述训练数据的特征数据判断所述训练数据的操作行为;

根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型。

在上述实施例的基础上,所述代码生成器模型采用如下过程建立,如图3所示。在训练的过程中,步骤一:获取标注的训练数据,所述训练数据包括任务数据模型和业务代码,并将训练数据送入模型训练模块,其中,模型训练数据如下表1所示。

表1模型训练数据

步骤二:神经网络感知器感知到当前输入的训练数据,抽取输入训练数据的特征;

步骤三:神经网络控制器根据输入的训练数据的特征来判断当前应该对输入数据实施何种行为;

步骤四:当确定了采取何种行为后,神经网络行为器来对输入数据进行实际操作,就将输入数据做了一步变换,形成中间数据,之后这个新形成的中间数据继续作为感知器的新输入即步骤二,如此循环,就能够对原始输入数据不断变换,来完成比如数组排序等任务。

本发明实施例提供的代码生成方法,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

可选地,所述根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型,具体为:

所述根据所述训练数据和所述操作行为对长期记忆神经网络的网络参数进行训练,得到所述代码生长器模型。

在上述实施例的基础上,根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型,具体地,训练神经网络编程器的学习目标是让深度学习系统模仿上述针对输入数据的行为过程,最终能够形成正确地输出数据。当训练完毕后,这些转换规则就被编码到神经网络的网络参数中w、p、u、q,本发明实施例中优选的为长期记忆神经网络lstm,最终生成正确的代码生成器模型,具体的训练过程如图4所示。

本发明实施例提供的代码生成方法,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

利用本发明实施例克服了现有技术中代码生成器生成的代码范围较窄,只能生成简单的pojo类、数据访问层等代码,并且还需要人工开发业务服务层,编写相关业务代码的缺陷;本发明实施例提供的代码生成器与系统架构强关联,可解决现有技术中对于私有框架无法根据现有代码生成器生成业务代码,需要根据私有框架定制代码生成器的问题。本发明实施例提供的代码生成器可解决现有技术中当系统架构升级或更换时,原先代码生成器无法适配,需要投诉大量人力资源研发代码生成器的问题;本发明实施例提供的代码生成器不仅支持java、c 等常用语言代码生成,而且还支持小众开发语言的代码生成器。

图5为本发明实施例提供的代码生成装置的结构示意图,如图5所示,所述装置包括获取单元10、训练单元20和输出单元30,具体为:

获取单元10用于输入的任务模型数据;

训练单元20用于述任务模型数据代入预先建立的代码生成器模型进行训练;

输出单元30用于所述任务模型数据对应的代码。

本发明实施例提供一种代码生成装置,包括获取单元10、训练单元20和输出单元30,获取单元10获取输入的任务模型数据,并对所述任务模型数据进行预处理,去除非ascii字符和标注,其中任务模型数据可以是簇、类或表等;训练单元20将所述任务模型数据代入到预先建立的代码生成器模型中进行训练,其中,预先建立的代码生成器中预先存储了针对不同任务模型数据的生成器模型;输出单元30根据不同的任务模型数据,输出所述任务模型数据对应的代码。

本发明实施例提供的代码生成装置,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

可选地,所述训练模块具体为:

提取所述任务模型数据的特征数据;

根据所述任务模型数据的特征数据判断所述任务模型数据的操作行为;

根据所述输入的任务模型数据和所述操作行为,对所述代码生成器模型进行训练。

在上述实施例的基础上,所述训练模块具体为:

神经网络感知器感知到当前输入的任务模型数据,并对输入的任务模型数据进行特征提取与表示;神经网络控制器根据获取的数据特征判知何种操作,例如对输入的数据需要进行排序等;神经网络行为器对输入的数据记性实际的变换行为,形成中间结果,如此反复,直到神经网络控制器决定终止操作,此时得到的结果就是程序对应输出的结果,并将输出的业务代码存储到代码仓库中。

本发明实施例提供的代码生成装置,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

可选地,所述代码生成器模型采用如下步骤建立:

获取标注的训练数据;

提取所述训练数据的特征数据;

根据所述训练数据的特征数据判断所述训练数据的操作行为;

根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型。

在上述实施例的基础上,所述代码生成器模型采用如下过程建立,如图3所示。在训练的过程中,步骤一:获取标注的训练数据,所述训练数据包括任务数据模型和业务代码,并将训练数据送入模型训练模块,其中,模型训练数据如上表1所示。

步骤二:神经网络感知器感知到当前输入的训练数据,抽取输入训练数据的特征;

步骤三:神经网络控制器根据输入的训练数据的特征来判断当前应该对输入数据实施何种行为;

步骤四:当确定了采取何种行为后,神经网络行为器来对输入数据进行实际操作,就将输入数据做了一步变换,形成中间数据,之后这个新形成的中间数据继续作为感知器的新输入即步骤二,如此循环,就能够对原始输入数据不断变换,来完成比如数组排序等任务。

本发明实施例提供的代码生成装置,通过将输入的任务模型数据代入预先建立的代码生成器进行训练,从而输出所述任务模型数据对应的代码,实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码,并且可自动生成代码,不需要手工进行配置,避免在配置过程中出现配错或漏配。

一种代码生成装置,包括基础管理模块、模型训练模块和服务应用模块,其中,所述服务应用模块包括上述装置所包括的获取单元、训练单元和输出单元。

本发明实施例提供一种代码生成装置,例如图6所示,包括基础管理模块、模型训练模块和服务应用模块,其中,所述服务应用模块包括上述装置所包括的获取单元、训练单元和输出单元。

具体地,所示基础管理模块用于对装置运行环境配置、模型训练数据、输入任务数据模型、代码输出管理。

训练数据管理提供录入、修改、保存、查询、标注训练数据(任务数据模型和业务代码),对标注的数据可以发起模型训练操作。

环境管理配置装置运行时依赖的数据库环境和访问装置的权限数据,其中数据库环境包括数据库tns、数据库用户、密码、数据库连接数等。

代码输出管理主要配置生成代码的存放目录、代码类文件命名管理、代码仓库配置等,装置将生成的业务代码保存到代码仓库正确的目录下。

模型训练模块用于获取标注的训练数据,送深度学习编程系统进行模型训练,通过模型训练后将训练的任务数据模型和正确输出的业务代码之间转换规则编码到神经网络的网络参数中,生成可用代码生成器模型。主体部分包含三个关键部件:神经网络控制器、神经网络感知器以及行为器,其中,三个关键部件的作用在上述实施例中已做论述。

服务应用模块用于获取输入的任务模型数据,送深度学习编程系统进行代码编程,将输入的任务模型数据变换为正确的业务代码,并输出到代码仓库中。主体部分包含三个关键部件:神经网络控制器、神经网络感知器以及行为器,其中,三个关键部件的作用在上述实施例中已做论述。

利用本发明实施例克服了现有技术中代码生成器生成的代码范围较窄,只能生成简单的pojo类、数据访问层等代码,并且还需要人工开发业务服务层,编写相关业务代码的缺陷;本发明实施例提供的代码生成器与系统架构强关联,可解决现有技术中对于私有框架无法根据现有代码生成器生成业务代码,需要根据私有框架定制代码生成器的问题。本发明实施例提供的代码生成器可解决现有技术中当系统架构升级或更换时,原先代码生成器无法适配,需要投诉大量人力资源研发代码生成器的问题;本发明实施例提供的代码生成器不仅支持java、c 等常用语言代码生成,而且还支持小众开发语言的代码生成器。

图7为本发明实施例提供的电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)810、通信接口(communicationsinterface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储在存储器830上并可在处理器810上运行的计算机程序,以执行上述各实施例提供的传输方法,例如包括:获取输入的任务模型数据;

将所述任务模型数据代入预先建立的代码生成器模型进行训练;

输出所述任务模型数据对应的代码。

另外,处理器810还可以调用存储在存储器830上并可在处理器810上运行的计算机程序,以执行上述各实施例提供的接收方法,例如包括:获取输入的任务模型数据;将所述任务模型数据代入预先建立的代码生成器模型进行训练;输出所述任务模型数据对应的代码。

此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:获取输入的任务模型数据;将所述任务模型数据代入预先建立的代码生成器模型进行训练;输出所述任务模型数据对应的代码。

本发明实施例还提供另一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的接收方法,例如包括:获取输入的任务模型数据;将所述任务模型数据代入预先建立的代码生成器模型进行训练;输出所述任务模型数据对应的代码。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。


技术特征:

1.一种代码生成方法,其特征在于,包括:

获取输入的任务模型数据;

将所述任务模型数据代入预先建立的代码生成器模型进行训练;

输出所述任务模型数据对应的代码。

2.根据权利要求1所述的方法,其特征在于,所述将所述任务模型数据代入预先建立的代码生成器模型进行训练,具体为:

提取所述任务模型数据的特征数据;

根据所述任务模型数据的特征数据判断所述任务模型数据的操作行为;

根据所述输入的任务模型数据和所述操作行为,对所述代码生成器模型进行训练。

3.根据权利要求1所述的方法,其特征在于,所述代码生成器模型采用如下步骤建立:

获取标注的训练数据;

提取所述训练数据的特征数据;

根据所述训练数据的特征数据判断所述训练数据的操作行为;

根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型。

4.根据权利要求3所述的方法,其特征在于,所述根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型,具体为:

所述根据所述训练数据和所述操作行为对长期记忆神经网络的网络参数进行训练,得到所述代码生长器模型。

5.一种代码生成装置,其特征在于,包括:

获取单元,用于获取输入的任务模型数据;

训练单元,用于将所述任务模型数据代入预先建立的代码生成器模型进行训练;

输出单元,用于输出所述任务模型数据对应的代码。

6.根据权利要求5所述的装置,其特征在于,所述训练模块具体为:

提取所述任务模型数据的特征数据;

根据所述任务模型数据的特征数据判断所述任务模型数据的操作行为;

根据所述输入的任务模型数据和所述操作行为,对所述代码生成器模型进行训练。

7.根据权利要求5所述的装置,其特征在于,所述代码生成器模型采用如下步骤建立:

获取标注的训练数据;

提取所述训练数据的特征数据;

根据所述训练数据的特征数据判断所述训练数据的操作行为;

根据所述训练数据和所述操作行为对神经网络编程器进行训练,得到所述代码生成器模型。

8.一种代码生成装置,其特征在于,包括基础管理模块、模型训练模块和服务应用模块,其中,所述服务应用模块包括权利要求5所包括的获取单元、训练单元和输出单元。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述方法的步骤。

10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述方法的步骤。

技术总结
本发明实施例提供一种代码生成方法及装置,所述方法包括:获取输入的任务模型数据;将所述任务模型数据代入预先建立的代码生成器模型进行训练;输出所述任务模型数据对应的代码。利用本发明实施例实现了基于配置化任务模型数据方式同时生成对象bean,数据访问层、业务访问层等,根据任务模型数据生成适配多种不同框架并且可生成多种程序语言的业务代码。

技术研发人员:穆铁马;郭岳;方炜;李海传;李伟;郑海朋;严昱超;马恺琳
受保护的技术使用者:中国移动通信集团浙江有限公司;中国移动通信集团有限公司
技术研发日:2018.11.30
技术公布日:2020.06.09

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

最新回复(0)