CN117420991A - 代码的生成方法、装置、存储介质及电子装置 - Google Patents
代码的生成方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN117420991A CN117420991A CN202311382311.4A CN202311382311A CN117420991A CN 117420991 A CN117420991 A CN 117420991A CN 202311382311 A CN202311382311 A CN 202311382311A CN 117420991 A CN117420991 A CN 117420991A
- Authority
- CN
- China
- Prior art keywords
- code
- engineering
- target
- checking
- template
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000007689 inspection Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 18
- 230000018109 developmental process Effects 0.000 description 11
- 238000011161 development Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000000047 product Substances 0.000 description 4
- 238000007429 general method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种代码的生成方法、装置、存储介质及电子装置,其中,该方法包括:获取为目标项目预先配置的领域模型,其中,领域模型中包括目标项目的配置信息以及目标项目的项目类型;从代码模板库中调取与项目类型相关联的代码模板;基于代码模板以及领域模型中包括的配置信息生成工程代码;对工程代码进行检查,得到检查结果;在检查结果指示检查通过的情况下,将工程代码确定为目标项目的目标工程代码,在检查结果指示未通过的情况下,修改工程代码,得到目标工程代码。通过本发明,解决了相关技术中存在的生成的代码风格不统一的问题,达到统一生成的代码风格的效果。
Description
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种代码的生成方法、装置、存储介质及电子装置。
背景技术
使用领域驱动设计(Domain-Driven Design,简称DDD)进行系统开发可以更好地理解业务需求、提高系统的可维护性和可扩展性,因此该设计模式已成为软件开发中的重要方法论。面向领域驱动设计的后端程序开发通常分为表示层、应用层、领域层以及基础设施层4层。开发人员在实现这4层代码的过程中,通常需要编写大量的重复性代码,这一方面降低了开发效率,浪费了大量的时间人力成本,也增加了系统出错的风险;另一方面,不同开发人员开发也带来了代码风格不统一的问题,缺少统一框架和约束,提高了代码维护的难度。
在相关技术中,一般的后端代码生成器仅根据数据库字段生成相关的实体和基础的增删改查代码方法,未考虑面向领域驱动设计的后端代码的特点,生成的代码不够优雅,有时会显得冗长、难以理解或难以维护,同时也无法实现代码风格的统一和约束。
由此可知,相关技术中存在生成的代码风格不统一的问题。
针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种代码的生成方法、装置、存储介质及电子装置,以至少解决相关技术中存在的生成的代码风格不统一的问题。
根据本发明的一个实施例,提供了一种代码的生成方法,包括:获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;从代码模板库中调取与所述项目类型相关联的代码模板;基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;对所述工程代码进行检查,得到检查结果;在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
根据本发明的另一个实施例,提供了一种代码的生成装置,包括:获取模块,用于获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;调取模块,用于从代码模板库中调取与所述项目类型相关联的代码模板;第一生成模块,用于基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;检测模块,用于对所述工程代码进行检查,得到检查结果;第二生成模块,用于在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,获取为目标项目预先配置的领域模型,其中,领域模型中包括目标项目的配置信息以及目标项目的项目类型;从代码模板库中调取与项目类型相关联的代码模板;基于代码模板以及领域模型中包括的配置信息生成工程代码;对工程代码进行检查,得到检查结果;在检查结果指示检查通过的情况下,将工程代码确定为目标项目的目标工程代码,在检查结果指示未通过的情况下,修改工程代码,得到目标工程代码。由于在生成目标项目的目标工程代码时,可以根据领域模块中包括的目标项目的项目类型确定代码模板,根据配置信息以及代码模板生成工程代码,在生成工程代码后,对工程代码进行检查,得到检测结果,在检查结果指示检查通过时,将工程代码确定为目标工程代码,在检查结果指示为通过的情况下,修改工程代码,得到目标工程代码。通过对工程代码进行检查,得到风格统一的目标工程代码。因此,可以解决相关技术中存在的生成的代码风格不统一的问题,达到统一生成的代码风格的效果。
附图说明
图1是本发明实施例的一种代码的生成方法的移动终端的硬件结构框图;
图2是根据本发明实施例的代码的生成方法的流程图;
图3是根据本发明具体实施例的代码的生成装置结构示意图;
图4是根据本发明具体实施例的代码的生成方法流程图;
图5是根据本发明实施例的代码的生成装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种代码的生成方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的代码的生成方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种代码的生成方法,图2是根据本发明实施例的代码的生成方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;
步骤S204,从代码模板库中调取与所述项目类型相关联的代码模板;
步骤S206,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;
步骤S208,对所述工程代码进行检查,得到检查结果;
步骤S210,在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
在上述实施例中,领域模型可以是预先为目标项目配置的模型,领域模型中可以包括目标项目的配置信息以及项目类型。配置信息可以包括目标项目中包括的目标指令值以及目标标签值、定义的接口信息、代码的分层信息、对象、参数、实体等。项目类型可以通过领域模型中包括的实体确定。
在上述实施例中,目标工程代码可以是面向领域领域驱动设计的代码。领域驱动设计其核心思想是将业务领域划分为多个子域,对每个子域进行深入的分析和理解,然后将这些子域的模型设计成软件系统的核心构件,在实施的过程中强调沟通协作和风格统一。面向领域驱动设计的后端开发通常分为表示层、应用层、领域层以及基础设施层4层。工程代码的生成可以采用MyBatisGenerator为代表的代码生成器。
MyBatis Generator可以生成数据库表结构对应的后端代码,其主要流程为:读取数据库信息:读取数据库表名、字段名、类型、注释等;解析配置文件:读取并解析用户配置的XML文件;生成代码:根据数据库表的元数据信息和用户配置的信息,MyBatis Generator会自动生成Java实体类、DAO接口等代码,实现基础的增删改查。
在上述实施例中,在确定目标项目的项目类型后,可以在代码模板库中获取与项目类型相关联的代码模板。其中,在代码模板库中获取与项目类型相关联的代码模板可以包括:获取项目的类型与代码模板的对应关系,根据对应关系确定与目标项目的项目类型对应的代码模板。
在上述实施例中,可以根据代码模板以及领域模型中的配置信息生成工程代码。例如,可以用配置信息中包括的参数、指令、标签等替换代码模板中的待替换参数、待替换指令、待替换标签等。还可以根据领域模型中包括的分层信息,对代码模板进行分层。
在上述实施例中,在生成工程代码后,即可对工程代码进行检查。在对工程代码进行检查时,可以逐条进行检查,也可以检查工程代码的工程目录。
通过本发明,获取为目标项目预先配置的领域模型,其中,领域模型中包括目标项目的配置信息以及目标项目的项目类型;从代码模板库中调取与项目类型相关联的代码模板;基于代码模板以及领域模型中包括的配置信息生成工程代码;对工程代码进行检查,得到检查结果;在检查结果指示检查通过的情况下,将工程代码确定为目标项目的目标工程代码,在检查结果指示未通过的情况下,修改工程代码,得到目标工程代码。由于在生成目标项目的目标工程代码时,可以根据领域模块中包括的目标项目的项目类型确定代码模板,根据配置信息以及代码模板生成工程代码,在生成工程代码后,对工程代码进行检查,得到检测结果,在检查结果指示检查通过时,将工程代码确定为目标工程代码,在检查结果指示为通过的情况下,修改工程代码,得到目标工程代码。通过对工程代码进行检查,得到风格统一的目标工程代码。因此,可以解决相关技术中存在的生成的代码风格不统一的问题,达到统一生成的代码风格的效果。
在上述实施例中,在得到符合要求的成品后端代码,即目标工程点名后,开发人员可以在此基础上,继续进行进一步的开发完善,以满足更加个性化的要求,而对于领域模型中的一般方法,则可以直接使用生成的代码进行后续的测试、应用流程。
可选地,上述步骤的执行主体可以是后台处理器,或者其他的具备类似处理能力的设备,还可以是至少集成有数据处理设备的机器,其中,数据处理设备可以包括计算机、手机等终端,但不限于此。
在一个示例性实施例中,对所述工程代码进行检查包括:确定预先配置的检查配置清单文件,以及分层规范文件;基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码,得到所述检查结果。在本实施例中,代码风格的统一是面向领域驱动设计中意图实现的统一业务开发与语言,降低沟通交流成本的重要保证。使用代码风格检查器可以实现对代码风格的统一强制约束,代码风格检查器可以是Checkstyle,Checkstyle是一个开源的Java代码风格检查器,它可以帮助开发人员在编写Java代码时自动检查代码的风格和质量。其中,可以在代码风格检查器中预先配置检查配置清单文件以及分层规范文件,利用检查配置清单文件对工程代码进行检查,利用分层规范文件对工程代码的分层结构进行检查。
在一个示例性实施例中,基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码包括:基于所述检查配置清单文件检查所述工程代码的目标语法;基于所述分层规范文件检查所述工程代码的分层结构。在本实施例中,代码风格检查器可以包含两部分,一个是检查配置清单文件(checkstyle.xml(语法风格检查)、checkstyle-import-control.xml(领域驱动设计的分层规范检查)),另一个是代码检查器。代码检查器按照配置的检查配置清单,对工程代码进行检查,利用分层规范文件检查工程代码的分层结构。
在一个示例性实施例中,修改所述工程代码包括:确定所述工程代码中包括的检测未通过的待修改代码;基于所述待修改代码生成告警信息,以指示目标对象基于所述告警信息对所述待修改代码进行修改。在本实施例中,不符合检查要求的代码不能进入开发库,无法打包生成成品,从而确保项目组内所有成员开发的代码均符合面向领域驱动设计的要求。因此,在确定工程代码检查未通过的情况下,可以确定出检测未通过的待修改代码,根据待修改代码生成告警信息,目标对象在接收到告警信息后,可以对待修改代码进行修改。其中,告警信息中包括待修改代码以及未通过检查的原因,以及检查待修改代码对应的目标清单文件。目标清单文件为配置清单文件中包括的文件。
在一个示例性实施例中,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码包括:解析所述代码模板,确定所述代码模板中包括的标签以及指令;确定所述配置信息中包括的替换标签值以及替换指令值;将所述标签修改为所述替换标签值,以及将所述指令修改为所述替换指令值,得到目标代码;基于所述目标代码生成所述工程代码。在本实施例中,代码模板的模板文件可以是ftl文件。在生成工程代码时,可以通过模板引擎从代码模板库中获取代码模板。其中,模板引擎可以采用FreeMarker,它是基于Java的模板引擎。利用该模板引擎生成源代码、XML文件、配置文件等。和FreeMarker配套的模板文件为ftl文件,该文件其中包含了FreeMarker的标签和指令,用于生成动态内容。在ftl文件中,可以使用FreeMarker的语法来定义变量、循环、条件判断等逻辑,以及调用Java方法等操作。当使用FreeMarker引擎解析ftl文件时,它会将模板文件中的标签和指令替换为实际的数据,最终生成代码。按照面向领域驱动设计的后端开发分层规范,从表示层、应用层、领域层以及基础设施层自上而下,其中,模板代码可以包括:
(a)表示层:controller.ftl(表示层接口模板)、assemblerDto.ftl(表示层dto到应用层ao转换方法模板)、dto.ftl(dto模板);
(b)应用层:applicationService.ftl(应用层方法模板)、assemblerAo.ftl(应用层ao到领域层entity转换方法模板)、ao.ftl(ao模板);
(c)领域层:entityQueryService.ftl(领域层查询服务模板)、entityUpdateService.ftl(领域层检查服务模板)、entityUpdateService.ftl(领域层更新服务模板)、assemblerEntity.ftl(领域层entity到基础设施层entity转换方法模板)、entity.ftl(领域层实体entity模板);
(d)基础设施层:repositoryApi.ftl(仓储接口模板)。
在一个示例性实施例中,基于所述目标代码生成所述工程代码包括:基于所述领域模型确定所述目标项目的分层结构;基于所述分层结构确定工程目录;将所述目标代码写入所述工程目录下,得到所述工程代码。在本实施例中,模板代码生成器可以从模板代码库中读取代码模板,送入FreeMarker引擎,基于FreeMarker引擎提供的能力,按照面向领域驱动设计的分层结构要求,自动实现工程目录分包,代码写入。实现模板代码的快速自动生成,是开发人员可以节省大量时间和精力,从而更专注于业务逻辑的实现。同时可以减少人为的拼写错误,降低出错率。
在一个示例性实施例中,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码包括:确定所述代码模板与所述领域模型的匹配度;在所述匹配度大于预定阈值的情况下,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码。在本实施例中,在从代码模板库中获取到代码模板后,可以确定代码模板与领域模型的匹配度,在匹配度大于预定阈值时,根据代码模板以及配置信息生成工程代码。在匹配度小于或等于预定阈值的情况下,可以反馈提示信息,以提示目标对象,如工作人员对代码模板进行修改,以使修改后的代码模板与领域模型的匹配度大于预定阈值。
下面结合具体实施方式对代码的生成方法进行说明:
图3是根据本发明具体实施例的代码的生成装置结构示意图,如图3所示,代码的生成装置包括4个模块,分别为,领域模型,模板代码生成器、代码风格检查以及后端代码。其中,领域模型为前置条件,后端代码为最终成果。
1、领域模型:在领域驱动设计中,领域模型是一个核心概念,它是对业务领域中的实体、值对象、聚合以及它们之间的关系的抽象表示。领域模型是一个具体的、可执行的模型,它描述了业务领域的概念、规则和行为,并提供了一种通用的语言来沟通业务需求和软件设计。领域模型被认为是领域驱动设计的核心,因为它可以帮助开发人员更好地理解业务需求,提高软件的可维护性、可扩展性和可测试性。领域模型的设计需要与开发人员、业务专家、产品人员密切合作,共同讨论确定。
2、模板代码生成器:模板代码生成器是本专利涉及方法的核心,具体包括模板引擎、代码模板和模板代码生成器3个部分。模板代码生成器利用模板引擎提供的能力,将模板代码转化成响应的工程代码,并自动处理相关工程分包结构,以满足面向领域驱动涉及的后端代码分层涉及规范。
(1)模板引擎:模板引擎采用FreeMarker,它是由Apache软件基金会构建的基于Java的模板引擎。利用该模板引擎生成源代码、XML文件、配置文件等。
(2)代码模板:和FreeMarker配套的模板文件为ftl文件,该文件其中包含了FreeMarker的标签和指令,用于生成动态内容。在ftl文件中,可以使用FreeMarker的语法来定义变量、循环、条件判断等逻辑,以及调用Java方法等操作。当使用FreeMarker引擎解析ftl文件时,它会将模板文件中的标签和指令替换为实际的数据,最终生成代码。按照面向领域驱动设计的后端开发分层规范,从表示层、应用层、领域层以及基础设施层自上而下,本方法包含如下的模板代码:
(a)表示层:controller.ftl(表示层接口模板)、assemblerDto.ftl(表示层dto到应用层ao转换方法模板)、dto.ftl(dto模板);
(b)应用层:applicationService.ftl(应用层方法模板)、assemblerAo.ftl(应用层ao到领域层entity转换方法模板)、ao.ftl(ao模板);
(c)领域层:entityQueryService.ftl(领域层查询服务模板)、entityUpdateService.ftl(领域层检查服务模板)、entityUpdateService.ftl(领域层更新服务模板)、assemblerEntity.ftl(领域层entity到基础设施层entity转换方法模板)、entity.ftl(领域层实体entity模板);
(d)基础设施层:repositoryApi.ftl(仓储接口模板)。
(3)模板代码生成器:模板代码生成器从模板代码库中读取代码模板,送入FreeMarker引擎,基于FreeMarker引擎提供的能力,按照面向领域驱动设计的分层结构要求,自动实现工程目录分包,代码写入。实现模板代码的快速自动生成,是开发人员可以节省大量时间和精力,从而更专注于业务逻辑的实现。同时可以减少人为的拼写错误,降低出错率。
3、代码风格检查器:代码风格的统一是面向领域驱动设计中意图实现的统一业务开发与语言,降低沟通交流成本的重要保证。使用代码风格检查器可以实现对代码风格的统一强制约束,Checkstyle是一个开源的Java代码风格检查器,它可以帮助开发人员在编写Java代码时自动检查代码的风格和质量。本专利所提供的后端代码生成方法中,包含一个适用于面向领域驱动设计的代码风格检查器,它包含两部分,一个是检查配置清单文件(checkstyle.xml(语法风格检查)、checkstyle-import-control.xml(领域驱动设计的分层规范检查)),另一个是代码检查器。代码检查器按照配置的检查配置清单,对工程代码进行检查,不符合检查要求的代码不能进入开发库,无法打包生成成品,从而确保项目组内所有成员开发的代码均符合面向领域驱动设计的要求。
4、后端代码:经过以上模块组件,最终可以得到符合要求的成品后端代码。开发人员可以在此基础上,继续进行进一步的开发完善,以满足更加个性化的要求,而对于领域模型中的一般方法,则可以直接使用生成的代码进行后续的测试、应用流程。
图4是根据本发明具体实施例的代码的生成方法流程图,如图4所示,该流程包括:
步骤S402,领域模型建模分析。
步骤S404,判断基础模板代码是否满足要求,在判断结果为是的情况下,执行步骤S406,在判断结果为否的情况下,执行步骤S408。
步骤S406,根据模板生成代码,开发业务逻辑。
步骤S408,修改模板代码。
步骤S410,判断是否符合风格检查要求,在判断结果为是的情况下,执行步骤S412,在判断结果为否的情况下,执行步骤S414。
步骤S412,结束。
步骤S414,按照风格检查要求修改代码。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种代码的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的代码的生成装置的结构框图,如图5所示,该装置包括
获取模块50,用于获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;
调取模块52,用于从代码模板库中调取与所述项目类型相关联的代码模板;
第一生成模块54,用于基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;
检测模块56,用于对所述工程代码进行检查,得到检查结果;
第二生成模块58,用于在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
在一个示例性实施例中,检测模块56可以通过如下方式实现对所述工程代码进行检查:确定预先配置的检查配置清单文件,以及分层规范文件;基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码,得到所述检查结果。
在一个示例性实施例中,检测模块56可以通过如下方式实现基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码:基于所述检查配置清单文件检查所述工程代码的目标语法;基于所述分层规范文件检查所述工程代码的分层结构。
在一个示例性实施例中,第二生成模块58可以通过如下方式实现修改所述工程代码:确定所述工程代码中包括的检测未通过的待修改代码;基于所述待修改代码生成告警信息,以指示目标对象基于所述告警信息对所述待修改代码进行修改。
在一个示例性实施例中,第一生成模块54可以通过如下方式实现基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码:解析所述代码模板,确定所述代码模板中包括的标签以及指令;确定所述配置信息中包括的替换标签值以及替换指令值;将所述标签修改为所述替换标签值,以及将所述指令修改为所述替换指令值,得到目标代码;基于所述目标代码生成所述工程代码。在本实施例中,
在一个示例性实施例中,第一生成模块54可以通过如下方式实现基于所述目标代码生成所述工程代码:基于所述领域模型确定所述目标项目的分层结构;基于所述分层结构确定工程目录;将所述目标代码写入所述工程目录下,得到所述工程代码。
在一个示例性实施例中,第一生成模块54可以通过如下方式基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码:确定所述代码模板与所述领域模型的匹配度;在所述匹配度大于预定阈值的情况下,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种代码的生成方法,其特征在于,包括:
获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;
从代码模板库中调取与所述项目类型相关联的代码模板;
基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;
对所述工程代码进行检查,得到检查结果;
在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
2.根据权利要求1所述的方法,其特征在于,对所述工程代码进行检查包括:
确定预先配置的检查配置清单文件,以及分层规范文件;
基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码,得到所述检查结果。
3.根据权利要求2所述的方法,其特征在于,基于所述检查配置清单文件以及所述分层规范文件检查所述工程代码包括:
基于所述检查配置清单文件检查所述工程代码的目标语法;
基于所述分层规范文件检查所述工程代码的分层结构。
4.根据权利要求1所述的方法,其特征在于,修改所述工程代码包括:
确定所述工程代码中包括的检测未通过的待修改代码;
基于所述待修改代码生成告警信息,以指示目标对象基于所述告警信息对所述待修改代码进行修改。
5.根据权利要求1所述的方法,其特征在于,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码包括:
解析所述代码模板,确定所述代码模板中包括的标签以及指令;
确定所述配置信息中包括的替换标签值以及替换指令值;
将所述标签修改为所述替换标签值,以及将所述指令修改为所述替换指令值,得到目标代码;
基于所述目标代码生成所述工程代码。
6.根据权利要求5所述的方法,其特征在于,基于所述目标代码生成所述工程代码包括:
基于所述领域模型确定所述目标项目的分层结构;
基于所述分层结构确定工程目录;
将所述目标代码写入所述工程目录下,得到所述工程代码。
7.根据权利要求1所述的方法,其特征在于,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码包括:
确定所述代码模板与所述领域模型的匹配度;
在所述匹配度大于预定阈值的情况下,基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码。
8.一种代码的生成装置,其特征在于,包括:
获取模块,用于获取为目标项目预先配置的领域模型,其中,所述领域模型中包括所述目标项目的配置信息以及所述目标项目的项目类型;
调取模块,用于从代码模板库中调取与所述项目类型相关联的代码模板;
第一生成模块,用于基于所述代码模板以及所述领域模型中包括的配置信息生成工程代码;
检测模块,用于对所述工程代码进行检查,得到检查结果;
第二生成模块,用于在所述检查结果指示检查通过的情况下,将所述工程代码确定为所述目标项目的目标工程代码,在所述检查结果指示未通过的情况下,修改所述工程代码,得到所述目标工程代码。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311382311.4A CN117420991A (zh) | 2023-10-23 | 2023-10-23 | 代码的生成方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311382311.4A CN117420991A (zh) | 2023-10-23 | 2023-10-23 | 代码的生成方法、装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117420991A true CN117420991A (zh) | 2024-01-19 |
Family
ID=89524085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311382311.4A Pending CN117420991A (zh) | 2023-10-23 | 2023-10-23 | 代码的生成方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117420991A (zh) |
-
2023
- 2023-10-23 CN CN202311382311.4A patent/CN117420991A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110275861B (zh) | 数据存储方法及装置、存储介质、电子装置 | |
Mens et al. | Evolving software architecture descriptions of critical systems | |
Prowell et al. | Cleanroom software engineering: technology and process | |
Warren | The renaissance of legacy systems: method support for software-system evolution | |
Miles et al. | Prime: A methodology for developing provenance-aware applications | |
KR101314949B1 (ko) | 통합 환경 생성기 | |
EP2228726B1 (en) | A method and system for task modeling of mobile phone applications | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
CN104932480A (zh) | 汽车诊断系统设计方法和装置 | |
CN107291450A (zh) | 一种编程友好型的敏捷代码自动生成方法 | |
CN109445837B (zh) | 一种应用程序的发布方法及设备 | |
US10713152B2 (en) | Automated path generator for optimized application testing | |
Moser et al. | Integrating production automation expert knowledge across engineering stakeholder domains | |
CN114217887A (zh) | 微服务编排方法、执行方法、装置及服务器 | |
CN111399828A (zh) | 一种基于模型驱动的逻辑设备建模方法及终端 | |
Popoola et al. | EMG: A domain-specific transformation language for synthetic model generation | |
Trias | Building CMS-based Web applications using a model-driven approach | |
Herbold et al. | Combining usage-based and model-based testing for service-oriented architectures in the industrial practice | |
CN112861456A (zh) | 工艺ip仿真模型封装及库管理方法及系统、存储介质 | |
CN111143228B (zh) | 基于决策表法的测试代码生成方法及装置 | |
JP2011515755A (ja) | 予約されたコンポーネントコンテナ基盤ソフトウェアの開発方法及び装置 | |
CN115904480A (zh) | 代码重构方法、装置、电子设备及存储介质 | |
Balogh et al. | Workflow-driven tool integration using model transformations | |
CN117420991A (zh) | 代码的生成方法、装置、存储介质及电子装置 | |
Güldali et al. | TORC: test plan optimization by requirements clustering |
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 |