CN111722839A - 一种代码生成方法、装置、电子设备及存储介质 - Google Patents
一种代码生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111722839A CN111722839A CN202010595772.XA CN202010595772A CN111722839A CN 111722839 A CN111722839 A CN 111722839A CN 202010595772 A CN202010595772 A CN 202010595772A CN 111722839 A CN111722839 A CN 111722839A
- Authority
- CN
- China
- Prior art keywords
- code
- target
- item
- code generation
- target item
- 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.)
- Granted
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
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- 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
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本申请提供了一种代码生成方法、装置、电子设备及存储介质,其中,该代码生成方法包括:在获取到目标项后,将所述目标项划分为多个分支项;根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。本申请能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种代码生成方法、装置、电子设备及存储介质。
背景技术
随着计算机技术普及程度的提高,程序编写适用于多种应用领域,比如,自动化生产线、大数据处理等。
通常,编程工作人员在获取用户需求后,编译符合用户需求的代码,但是,当用户需求较为复杂时,需要多个编程工作人员共同完成代码的编写工作,在该种方式下,由于不同的编程工作人员具有不同的编写风格,导致编写出的代码标准不统一,代码通用性差。
发明内容
有鉴于此,本申请实施例的目的在于提供一种代码生成方法、装置、电子设备及存储介质,能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
第一方面,本申请实施例提供了一种代码生成方法,所述代码生成方法包括:
在获取到目标项后,将所述目标项划分为多个分支项;
根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;
根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
在一种可能的实施方式中,通过如下方式确定所述目标项:
在接收到服务请求方发送的候选项后,若所述候选项不满足预设的编程条件,则向所述服务请求方发送第一提示信息,以使所述服务请求方更新所述候选项;
当接收到满足所述编程条件的更新候选项后,将所述更新候选项确定为所述目标项。
在一种可能的实施方式中,所述根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型,包括:
根据所述多个分支项之间的第一关联关系,对所述目标项进行业务建模,得到所述目标项对应的多个实体;
根据所述多个分支项之间的第一关联关系,每个所述分支项对应的数据信息,以及所述目标项对应的多个实体,对所述目标项进行数据建模,确定所述目标项对应的数据属性信息。
在一种可能的实施方式中,所述根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码,包括:
根据预设的存储结构和读取方式,每个所述分支项对应的编码工具,将所述逻辑模型转换为物理模型;
根据所述物理模型,以及预设的代码生成规则,在开发环境中按照基础框架、实体描述、持久层、服务层、接口层的顺序生成所述目标项对应的目标代码。
在一种可能的实施方式中,所述代码生成方法还包括:
根据所述目标代码中所述实体描述对应的第一代码,以及所述接口层对应的第二代码,生成所述目标代码对应的接口说明文档。
在一种可能的实施方式中,在开发环境中生成所述目标项对应的目标代码之后,所述代码生成方法还包括:
根据所述目标代码的编写语言对应的语法规则,对所述目标代码进行语法检查;
若所述目标代码不满足所述语法规则,则向服务提供方发送第二提示信息,以使所述服务提供方更新所述目标代码。
在一种可能的实施方式中,在开发环境中生成所述目标项对应的目标代码之后,所述代码生成方法还包括:
在测试环境中对所述目标代码进行相关测试,生成所述目标代码对应的测试报告;
若所述测试报告满足预设的测试条件,则将所述目标代码发布至生产环境中。
第二方面,本申请实施例提供了一种代码生成装置,所述代码生成装置包括:
划分模块,用于在获取到目标项后,将所述目标项划分为多个分支项;
确定模块,用于根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;
第一生成模块,用于根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一项所述的代码生成方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面任一项所述的代码生成方法的步骤。
本申请实施例提供的代码生成方法、装置、电子设备及存储介质,在获取到目标项后,将所述目标项划分为多个分支项;根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。本申请能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
进一步,本申请实施例提供的代码生成方法、装置、电子设备及存储介质,还可以在接收到服务请求方发送的候选项后,若所述候选项不满足预设的编程条件,则向所述服务请求方发送第一提示信息,以使所述服务请求方更新所述候选项;当接收到满足所述编程条件的更新候选项后,将所述更新候选项确定为所述目标项。本申请能够对服务请求方提供的候选项进行筛选,得到满足预设的编程条件的目标项,再根据目标项生成对应的目标代码,提高生成目标代码的准确性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种代码生成方法的流程图;
图2示出了本申请实施例提供的另一种代码生成方法的流程图;
图3示出了本申请实施例提供的另一种代码生成方法的流程图;
图4示出了本申请实施例提供的另一种代码生成方法的流程图;
图5示出了本申请实施例提供的一种代码生成装置的示意图;
图6示出了本申请实施例提供的一种电子设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,编程工作人员在获取用户需求后,编译符合用户需求的代码,但是,当用户需求较为复杂时,需要多个编程工作人员共同完成代码的编写工作,在该种方式下,由于不同的编程工作人员具有不同的编写风格,导致编写出的代码标准不统一,代码通用性差。
基于上述问题,本申请实施例提供了一种代码生成方法、装置、电子设备及存储介质,在获取到目标项后,将所述目标项划分为多个分支项;根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。本申请能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请针对上述问题所提出的解决方案,都应该是发明人在本申请过程中对本申请做出的贡献。
下面将结合本申请中附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种代码生成方法进行详细介绍。
参见图1所示,图1为本申请实施例提供的代码生成方法的流程图,该代码生成方法包括以下步骤:
S101、在获取到目标项后,将所述目标项划分为多个分支项。
本申请实施例中,针对不同类别的产品,根据产品的需求规范,构建该类产品的需求通用模型,为用户提供可视化界面,用户基于可视化界面的相关提示填写用户需求。作为一种可能的实施方式,上述可视化界面上显示的信息包括:需求名称、需求功能、验收标准以及需求需要的数据等主要属性,以及创建人、验收人、创建时间等次要属性。
服务请求方从多个需求通用模型中,选取与当前需求相匹配的目标需求通用模型,基于目标需求通用模型对应的可视化界面输入需求信息(即目标项),需求信息包括需求名称、功能描述、每个功能的交互步骤以及需求最后的验收标准和需求需要的基础数据。
服务器在获取需求信息(目标项)之后,生成目标项对应的概念模型,具体包括:从需求信息(目标项)中提取预设功能对应的关键词,并将提取出的关键词对应的功能,确定为目标项对应的分支项;根据需求信息中每个功能的交互步骤确定多个功能(多个分支项)之间的第一关联关系;若服务请求方基于可视化界面确定每个功能分别对应不同的基础数据,则根据需求信息中每个功能对应的基础数据,确定该功能(分支项)对应的数据信息;若服务请求方基于可视化界面确定每个功能均对应相同的基础数据,则根据需求信息对应的基础数据,确定每个功能(分支项)对应的数据信息,此时,每个功能(分支项)对应相同的数据信息。
S102、根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型。
本申请实施例中,对服务请求方提供的需求信息进行逻辑结构设计,将目标项对应的概念模型转换为逻辑模型,具体包括:根据所述多个分支项之间的第一关联关系,对所述目标项进行业务建模,得到所述目标项对应的多个实体;根据所述多个分支项之间的第一关联关系,每个所述分支项对应的数据信息,以及所述目标项对应的多个实体,对所述目标项进行数据建模,确定所述目标项对应的数据属性信息。
本申请实施例中,首先进行业务建模,解读用户的需求信息,形成目标项对应的实体;然后进行数据建模,基于业务建模的结果,根据多个分支项之间的第一关联关系,每个分支项对应的数据信息,确定目标项对应的数据属性信息,上述数据属性信息具体包括:数据之间的关联性、定义数据类型、确保数据完整性、定义数据的操作过程、选择数据存储的技术。即在将概念模型转换为逻辑模型时,分析需求信息包括几个功能,需要几张数据表,每张数据表的数据结构、数据项的类型与范围等信息。
需要说明的是,每个分支项对应的数据信息可以存储在一个数据表内,也可以存储在多个数据表内。初始阶段,每个分支项仅对应一个数据表,当每个分支项对应的数据信息存储在多个数据表内时,需要对分支项对应的数据表进行分表处理,上述分表处理过程包括:方式一,将每个分支项对应的数据表的存储容量与预设的目标存储容量进行比较,若数据表的存储容量大于上述目标存储容量,则将数据表等分成多个分支数据表,其中,每个分支数据表的存储容量小于等于上述目标存储容量;方式二,根据每个分支项对应的数据表中包括的数据类型,将每个数据类型对应的数据信息确定为一个分支数据表,其中,上述数据类型的个数等于分支数据表的个数。
S103、根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
本申请实施例中,首先将目标项对应的逻辑模型转换为物理模型,然后基于确定的物理模型,在开发环境中生成目标项对应的目标代码,具体包括:根据预设的存储结构和读取方式,每个所述分支项对应的编码工具,将所述逻辑模型转换为物理模型;根据所述物理模型,以及预设的代码生成规则,在开发环境中按照基础框架、实体描述、持久层、服务层、接口层的顺序生成所述目标项对应的目标代码。
本申请实施例中,首先确定物理模型,物理模型是在逻辑模型的基础上,选取合适的物理介质,并对数据库表的存储结构和读取方式进行定义;然后在开发环境中基于物理模型生成目标项对应的目标代码,以物理模型为基础,参照软件设计规则和设计模式,对用户需求进行分层的代码生成,按照基础框架、实体描述、持久层、服务层、接口层的顺序生成需求代码。具体的,基于目标项所属的类别,选取与上述类别相匹配的基础框架,基于多个分支项之间的第一关联关系,生成服务层代码,若服务层涉及到数据信息,则通过持久层从数据库中获取对应的数据信息,若服务层涉及到数据结构,从通过实体描述获取对应的数据结构。即自动化代码生成内容包括:基础框架代码、数据建模的SQL(Structured QueryLanguage,结构化查询语言)、访问数据库的操作代码、表的实体、操作的业务代码、功能输出接口的代码。
本申请实施例中,支持多种框架的自定义配置,采用自动化代码生成工具生成基础框架和核心代码,首先进行项目框架的自动创建,在创建好的项目中关联基础工具包,其次通过自动化工具创建实体映射关系、持久层、业务层和控制层的代码。
在确定目标代码之后,该目标代码用于在生产环境中运行,进行实现所述目标项对应的功能。
本申请实施例提供的代码生成方法,基于预设的代码生成流程,根据服务请求方提供的需求信息,生成目标项对应的目标代码,能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
采用本申请实施例提供的代码生成方法,面向开发人员,能够保持代码开发的统一性,降低出错率,进而提高开发人员的工作效率;面向产品人员,能够提高产品质量,加快产品研发效率,提高产品迭代速度。
进一步的,参见图2所示,图2为本申请实施例提供的代码生成方法中,确定所述目标项的流程图。
S201、在接收到服务请求方发送的候选项后,若所述候选项不满足预设的编程条件,则向所述服务请求方发送第一提示信息,以使所述服务请求方更新所述候选项。
S202、当接收到满足所述编程条件的更新候选项后,将所述更新候选项确定为所述目标项。
本申请实施例中,服务请求方基于可视化界面写入需求信息(候选项),服务器在接收到候选项后,判断上述候选项是否符合预设的编程条件,若该候选项满足编程条件,则将该候选项确定为目标项,进而生成该目标项对应的目标代码;若该候选项不满足编程条件,则向服务请求方发送第一提示信息,以使服务请求方更新该候选项,直至服务请求方提供的更新候选项满足编程条件,将该更新候选项确定为目标项。
本申请实施例中,每个候选项对应多个功能描述,每个功能描述对应一个数据表,数据表中包括多个数据项关键词,以及每个数据项关键词下属的数据项的值。判断候选项是否符合预设的编程条件时,具体包括:
针对每个数据项关键词,获取该数据项关键词下属的每个数据项的值对应的数据类型,若每个数据项的值均对应同一种数据类型,则确定该数据项关键词具有一致性,若每个数据项关键词均具有一致性,则确定该候选项具有一致性。比如,候选项的数据项关键词为“姓名”和“年龄”,“姓名”下属的数据项的值分别为“张三”、“李四”、“0124”,即“姓名”对应多种(字符和数字)数据类型,确定“姓名”不具有一致性,“年龄”下属的数据项的值分别为“20”、“18”、“35”,即“年龄”对应同一种数据类型,确定“姓名”具有一致性,这里,“姓名”不具有一致性,“年龄”具有一致性,确定候选项不具有一致性。
针对每个数据表,获取每个数据项关键词下属的数据项的值的个数,若每个数据项关键词下属的数据项的值的个数均相等,则确定该数据表具有完整性。比如,数据表1的数据项关键词为“姓名”和“年龄”,“姓名”下属的数据项的值分别为“张三”、“李四”、“王二”,即“姓名”对应3个数据项的值;“年龄”下属的数据项的值分别为“20”、“18”、“35”,即“年龄”对应3个数据项的值,确定数据表1具有完整性。
获取候选项对应的功能描述的个数,以及候选项对应的数据表的个数,若功能描述的个数等于数据表的个数,则确定候选项具有合理性,否则,确定候选项不具有合理性。
进一步的,代码属于机器语言,服务请求方无法很好地理解生成的目标代码,因此,将机器语言转换为服务请求方可以理解的用户语言,即基于目标代码生成接口文档是很有必要的。
根据所述目标代码中所述实体描述对应的第一代码,以及所述接口层对应的第二代码,生成所述目标代码对应的接口说明文档。
本申请实施例中,根据目标代码中有关实体描述的部分代码,以及有关接口层的部分代码,确定接口说明文档,具体包括:API(Ameritest Performance Index,应用程序编程接口)相关的接口描述、参数、返回类型、样例进行文档格式的输出,便于服务请求方理解每个需求需要调用的接口、每个接口需要如何使用以及接口数据的解释与描述。
进一步的,参见图3所示,图3为本申请实施例提供的代码生成方法中,确定目标代码是否满足语法规则的流程图。在开发环境中生成所述目标项对应的目标代码之后,所述代码生成方法还包括:
S301、根据所述目标代码的编写语言对应的语法规则,对所述目标代码进行语法检查。
S302、若所述目标代码不满足所述语法规则,则向服务提供方发送第二提示信息,以使所述服务提供方更新所述目标代码。
本申请实施例中,根据编写目标代码所用的编写语言,查找该编写语言对应的语法规则,基于该语法规则,对目标代码进行语法检查。若目标代码满足语法规则,则确定该目标代码是可以实现目标项对应功能的代码,若目标代码不满足语法规则,则向服务提供方发送第二提示信息,以使服务提供方更新所述目标代码,直至更新后的目标代码满足语法规则。
进一步的,参见图4所示,图4为本申请实施例提供的代码生成方法中,确定对目标代码进行相关测试的流程图。
S401、在测试环境中对所述目标代码进行相关测试,生成所述目标代码对应的测试报告。
S402、若所述测试报告满足预设的测试条件,则将所述目标代码发布至生产环境中。
本申请实施例中,先从代码库中拉取目标代码,通过build命令对目标代码进行编译,然后对代码进行依赖环境安装和容器部署,并自动启动和关闭服务。在测试环境中对目标代码进行质量检查和单元测试,基于业务建模的结果确定测试用例,测试用例是以服务请求方提供的需求用例中的功能交互和验收标准为基础,按照自动化自测工具的语法生成的标准。根据上述测试用例对目标代码进行测试,生成测试报告,在测试报告通过后将目标代码部署到生产环境中。需要说明的是,开发环境、测试环境、生产环境对应的数据是相同的。在开发环境、测试环境中,对服务器搭建、系统安装、依赖环境安装、容器安装、服务启动关闭进行自动化部署,无需人工参与。
基于同一发明构思,本申请实施例中还提供了与代码生成方法对应的代码生成装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述代码生成方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图5所示,图5为本申请一实施例提供的一种代码生成装置的结构示意图,该代码生成装置包括:
划分模块501,用于在获取到目标项后,将所述目标项划分为多个分支项;
确定模块502,用于根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;
第一生成模块503,用于根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
在一种可能的实施方式中,上述代码生成装置还包括:
第一发送模块,用于在接收到服务请求方发送的候选项后,若所述候选项不满足预设的编程条件,则向所述服务请求方发送第一提示信息,以使所述服务请求方更新所述候选项;
更新模块,用于当接收到满足所述编程条件的更新候选项后,将所述更新候选项确定为所述目标项。
在一种可能的实施方式中,确定模块502,根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型,包括:
根据所述多个分支项之间的第一关联关系,对所述目标项进行业务建模,得到所述目标项对应的多个实体;
根据所述多个分支项之间的第一关联关系,每个所述分支项对应的数据信息,以及所述目标项对应的多个实体,对所述目标项进行数据建模,确定所述目标项对应的数据属性信息。
在一种可能的实施方式中,第一生成模块503,根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码,包括:
根据预设的存储结构和读取方式,每个所述分支项对应的编码工具,将所述逻辑模型转换为物理模型;
根据所述物理模型,以及预设的代码生成规则,在开发环境中按照基础框架、实体描述、持久层、服务层、接口层的顺序生成所述目标项对应的目标代码。
在一种可能的实施方式中,上述代码生成装置还包括:
第二生成模块,用于根据所述目标代码中所述实体描述对应的第一代码,以及所述接口层对应的第二代码,生成所述目标代码对应的接口说明文档。
在一种可能的实施方式中,上述代码生成装置还包括:
语法检查模块,用于根据所述目标代码的编写语言对应的语法规则,对所述目标代码进行语法检查;
第二发送模块,用于若所述目标代码不满足所述语法规则,则向服务提供方发送第二提示信息,以使所述服务提供方更新所述目标代码。
在一种可能的实施方式中,上述代码生成装置还包括:
第三生成模块,用于在测试环境中对所述目标代码进行相关测试,生成所述目标代码对应的测试报告;
发布模块,用于若所述测试报告满足预设的测试条件,则将所述目标代码发布至生产环境中。
本申请实施例提供的代码生成装置,基于预设的代码生成流程,根据服务请求方提供的需求信息,生成目标项对应的目标代码,能够在复杂用户需求的前提下,生成具有统一标准的代码,使得代码的通用性较好,且提高了代码的编译效率。
参见图6所示,图6为本申请实施例提供的一种电子设备600,该电子设备600包括:处理器601、存储器602和总线,所述存储器602存储有所述处理器601可执行的机器可读指令,当电子设备运行时,所述处理器601与所述存储器602之间通过总线通信,所述处理器601执行所述机器可读指令,以执行如上述代码生成方法的步骤。
具体地,上述存储器602和处理器601能够为通用的存储器和处理器,这里不做具体限定,当处理器601运行存储器602存储的计算机程序时,能够执行上述代码生成方法。
对应于上述代码生成方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述代码生成方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码生成方法,其特征在于,所述代码生成方法包括:
在获取到目标项后,将所述目标项划分为多个分支项;
根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;
根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
2.根据权利要求1所述的代码生成方法,其特征在于,通过如下方式确定所述目标项:
在接收到服务请求方发送的候选项后,若所述候选项不满足预设的编程条件,则向所述服务请求方发送第一提示信息,以使所述服务请求方更新所述候选项;
当接收到满足所述编程条件的更新候选项后,将所述更新候选项确定为所述目标项。
3.根据权利要求1所述的代码生成方法,其特征在于,所述根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型,包括:
根据所述多个分支项之间的第一关联关系,对所述目标项进行业务建模,得到所述目标项对应的多个实体;
根据所述多个分支项之间的第一关联关系,每个所述分支项对应的数据信息,以及所述目标项对应的多个实体,对所述目标项进行数据建模,确定所述目标项对应的数据属性信息。
4.根据权利要求1所述的代码生成方法,其特征在于,所述根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码,包括:
根据预设的存储结构和读取方式,每个所述分支项对应的编码工具,将所述逻辑模型转换为物理模型;
根据所述物理模型,以及预设的代码生成规则,在开发环境中按照基础框架、实体描述、持久层、服务层、接口层的顺序生成所述目标项对应的目标代码。
5.根据权利要求4所述的代码生成方法,其特征在于,所述代码生成方法还包括:
根据所述目标代码中所述实体描述对应的第一代码,以及所述接口层对应的第二代码,生成所述目标代码对应的接口说明文档。
6.根据权利要求1所述的代码生成方法,其特征在于,在开发环境中生成所述目标项对应的目标代码之后,所述代码生成方法还包括:
根据所述目标代码的编写语言对应的语法规则,对所述目标代码进行语法检查;
若所述目标代码不满足所述语法规则,则向服务提供方发送第二提示信息,以使所述服务提供方更新所述目标代码。
7.根据权利要求1所述的代码生成方法,其特征在于,在开发环境中生成所述目标项对应的目标代码之后,所述代码生成方法还包括:
在测试环境中对所述目标代码进行相关测试,生成所述目标代码对应的测试报告;
若所述测试报告满足预设的测试条件,则将所述目标代码发布至生产环境中。
8.一种代码生成装置,其特征在于,所述代码生成装置包括:
划分模块,用于在获取到目标项后,将所述目标项划分为多个分支项;
确定模块,用于根据所述多个分支项之间的第一关联关系,以及每个所述分支项对应的数据信息,确定所述目标项对应的逻辑模型;
第一生成模块,用于根据所述逻辑模型以及预设的代码生成规则,在开发环境中生成所述目标项对应的目标代码;其中,所述目标代码用于在生产环境中运行,以实现所述目标项对应的功能。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一项所述的代码生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一项所述的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010595772.XA CN111722839B (zh) | 2020-06-24 | 2020-06-24 | 一种代码生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010595772.XA CN111722839B (zh) | 2020-06-24 | 2020-06-24 | 一种代码生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111722839A true CN111722839A (zh) | 2020-09-29 |
CN111722839B CN111722839B (zh) | 2023-03-03 |
Family
ID=72568942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010595772.XA Active CN111722839B (zh) | 2020-06-24 | 2020-06-24 | 一种代码生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722839B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965697A (zh) * | 2021-03-25 | 2021-06-15 | 北京奇艺世纪科技有限公司 | 一种代码文件的生成方法、装置及电子设备 |
CN113296760A (zh) * | 2021-05-25 | 2021-08-24 | 深信服科技股份有限公司 | 模型代码的生成方法、计算机设备及可读存储介质 |
CN113448562A (zh) * | 2021-03-31 | 2021-09-28 | 北京新氧科技有限公司 | 一种逻辑代码自动生成方法、装置和电子设备 |
CN113590134A (zh) * | 2021-08-16 | 2021-11-02 | 北京字节跳动网络技术有限公司 | 一种项目生成方法及装置 |
CN113609823A (zh) * | 2021-07-14 | 2021-11-05 | Oppo广东移动通信有限公司 | 问卷逻辑的编辑方法、装置、终端设备及存储介质 |
CN113672227A (zh) * | 2021-08-30 | 2021-11-19 | 北京爱奇艺科技有限公司 | 用户界面代码生成方法、装置、电子设备及存储介质 |
CN113918664A (zh) * | 2021-12-14 | 2022-01-11 | 阿里云计算有限公司 | 一种数据处理方法以及装置 |
CN116339703A (zh) * | 2023-05-24 | 2023-06-27 | 北京蓝天航空科技股份有限公司 | 总线接口代码生成方法、装置、电子设备及介质 |
CN117369783A (zh) * | 2023-12-06 | 2024-01-09 | 之江实验室 | 一种安全代码生成模型的训练方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
US20160012350A1 (en) * | 2014-07-12 | 2016-01-14 | Microsoft Technology Licensing, Llc | Interoperable machine learning platform |
CN107122183A (zh) * | 2017-04-17 | 2017-09-01 | 上海众开信息科技有限公司 | 业务代码生成方法及装置 |
CN108520008A (zh) * | 2018-03-15 | 2018-09-11 | 链家网(北京)科技有限公司 | 数据仓库模型的构建方法及构建装置 |
CN110321118A (zh) * | 2019-07-05 | 2019-10-11 | 深圳市智慧郎数码科技有限公司 | 函数代码的生成方法及相关设备 |
CN110442329A (zh) * | 2019-06-26 | 2019-11-12 | 平安科技(深圳)有限公司 | 代码段的生成方法、装置、存储介质及计算机设备 |
-
2020
- 2020-06-24 CN CN202010595772.XA patent/CN111722839B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
US20160012350A1 (en) * | 2014-07-12 | 2016-01-14 | Microsoft Technology Licensing, Llc | Interoperable machine learning platform |
CN107122183A (zh) * | 2017-04-17 | 2017-09-01 | 上海众开信息科技有限公司 | 业务代码生成方法及装置 |
CN108520008A (zh) * | 2018-03-15 | 2018-09-11 | 链家网(北京)科技有限公司 | 数据仓库模型的构建方法及构建装置 |
CN110442329A (zh) * | 2019-06-26 | 2019-11-12 | 平安科技(深圳)有限公司 | 代码段的生成方法、装置、存储介质及计算机设备 |
CN110321118A (zh) * | 2019-07-05 | 2019-10-11 | 深圳市智慧郎数码科技有限公司 | 函数代码的生成方法及相关设备 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965697B (zh) * | 2021-03-25 | 2023-07-25 | 北京奇艺世纪科技有限公司 | 一种代码文件的生成方法、装置及电子设备 |
CN112965697A (zh) * | 2021-03-25 | 2021-06-15 | 北京奇艺世纪科技有限公司 | 一种代码文件的生成方法、装置及电子设备 |
CN113448562A (zh) * | 2021-03-31 | 2021-09-28 | 北京新氧科技有限公司 | 一种逻辑代码自动生成方法、装置和电子设备 |
CN113448562B (zh) * | 2021-03-31 | 2023-10-20 | 北京新氧科技有限公司 | 一种逻辑代码自动生成方法、装置和电子设备 |
CN113296760A (zh) * | 2021-05-25 | 2021-08-24 | 深信服科技股份有限公司 | 模型代码的生成方法、计算机设备及可读存储介质 |
CN113609823B (zh) * | 2021-07-14 | 2023-12-12 | Oppo广东移动通信有限公司 | 问卷逻辑的编辑方法、装置、终端设备及存储介质 |
CN113609823A (zh) * | 2021-07-14 | 2021-11-05 | Oppo广东移动通信有限公司 | 问卷逻辑的编辑方法、装置、终端设备及存储介质 |
CN113590134A (zh) * | 2021-08-16 | 2021-11-02 | 北京字节跳动网络技术有限公司 | 一种项目生成方法及装置 |
CN113672227A (zh) * | 2021-08-30 | 2021-11-19 | 北京爱奇艺科技有限公司 | 用户界面代码生成方法、装置、电子设备及存储介质 |
CN113672227B (zh) * | 2021-08-30 | 2024-04-23 | 北京爱奇艺科技有限公司 | 用户界面代码生成方法、装置、电子设备及存储介质 |
CN113918664A (zh) * | 2021-12-14 | 2022-01-11 | 阿里云计算有限公司 | 一种数据处理方法以及装置 |
CN113918664B (zh) * | 2021-12-14 | 2022-06-14 | 阿里云计算有限公司 | 一种数据处理方法以及装置 |
CN116339703A (zh) * | 2023-05-24 | 2023-06-27 | 北京蓝天航空科技股份有限公司 | 总线接口代码生成方法、装置、电子设备及介质 |
CN116339703B (zh) * | 2023-05-24 | 2023-08-15 | 北京蓝天航空科技股份有限公司 | 总线接口代码生成方法、装置、电子设备及介质 |
CN117369783A (zh) * | 2023-12-06 | 2024-01-09 | 之江实验室 | 一种安全代码生成模型的训练方法及装置 |
CN117369783B (zh) * | 2023-12-06 | 2024-02-23 | 之江实验室 | 一种安全代码生成模型的训练方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111722839B (zh) | 2023-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
US9405532B1 (en) | Integrated cloud platform translation system | |
CN111784108B (zh) | 一种主数据管理平台的建模方法和装置 | |
CN114238381A (zh) | 数据质量校验方法、设备及计算机可读存储介质 | |
EP2199905A1 (en) | Lifecycle management and consistency checking of object models using application platform tools | |
JP5651050B2 (ja) | データ生成装置及びデータ生成プログラム | |
CN116560683A (zh) | 软件更新方法、装置、设备及存储介质 | |
Tauscher et al. | A modular graph transformation rule set for IFC‐to‐CityGML conversion | |
CN114491064A (zh) | 一种物联网平台构建方法、装置、存储介质及终端 | |
CN116483850A (zh) | 数据处理方法、装置、设备以及介质 | |
CN112561690A (zh) | 信用卡分期业务接口的测试方法、系统、设备及存储介质 | |
CN112579604A (zh) | 测试系统的造数方法、装置、设备及存储介质 | |
CN116755669A (zh) | 一种基于dsl语言操作模型的低代码开发方法和工具 | |
CN111427577A (zh) | 代码处理方法、装置及服务器 | |
CN115422202A (zh) | 业务模型的生成方法、业务数据查询方法、装置及设备 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN109697141B (zh) | 用于可视化测试的方法及装置 | |
JP2012033017A (ja) | 規則検査装置、規則検査方法及び規則検査プログラム | |
CN111859985A (zh) | Ai客服模型测试方法、装置、电子设备及存储介质 | |
CN114556238A (zh) | 用于在云计算环境中生成资产信息的数字表示的方法和系统 | |
CN109871318B (zh) | 一种基于软件运行网络的关键类识别方法 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CN117389541B (zh) | 基于对话检索生成模板的配置系统及设备 | |
CN116661758B (zh) | 一种优化日志框架配置的方法、装置、电子设备及介质 | |
KR100656559B1 (ko) | Bibd 방법론을 이용하는 프로그램 자동 개발 장치 |
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 |