CN114035803A - 代码自动生成方法、装置、设备及计算机可读存储介质 - Google Patents

代码自动生成方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114035803A
CN114035803A CN202210019207.8A CN202210019207A CN114035803A CN 114035803 A CN114035803 A CN 114035803A CN 202210019207 A CN202210019207 A CN 202210019207A CN 114035803 A CN114035803 A CN 114035803A
Authority
CN
China
Prior art keywords
code
template
determining
result
event storm
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
CN202210019207.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.)
Shenzhen Mingyuan Cloud Technology Co Ltd
Original Assignee
Shenzhen Mingyuan Cloud Technology Co Ltd
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 Shenzhen Mingyuan Cloud Technology Co Ltd filed Critical Shenzhen Mingyuan Cloud Technology Co Ltd
Priority to CN202210019207.8A priority Critical patent/CN114035803A/zh
Publication of CN114035803A publication Critical patent/CN114035803A/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/44Encoding
    • G06F8/447Target code generation
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Machine Translation (AREA)

Abstract

本发明公开了一种代码自动生成方法、装置、设备及计算机可读存储介质,属于计算机软件技术领域。本发明通过确定预设的代码模板,得到符合领域驱动设计架构代码规范为基础框架,对事件风暴进行需求分析,得到事件风暴结果,得到用户实际数据来源,对该事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据,将数据源转换为代码模板可识别的目标数据,进而依据该目标数据对代码模板进行渲染,得到目标代码文件,提升了代码转换的效率,且通过目标代码文件,可在基于领域驱动设计的开发团队中形成统一的领域语言,保证团队中每个项目结构保持一致,同时目标代码文件的自动生成,确保团队新成员快速融入开发团队,有效降低培养学习成本。

Description

代码自动生成方法、装置、设备及计算机可读存储介质
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种代码自动生成方法、装置、设备及计算机可读存储介质。
背景技术
随着业务的发展和微服务的流行,由传统的MVC(Model View Controller)技术架构构建的服务,越来越难以支撑复杂的业务要求。因此,DDD(Domain Driven Design,领域驱动设计)这种为解决软件复杂性的技术架构,在行业内越来越流行。但是与此同时,对于习惯MVC传统架构开发的开发人员来说使用DDD进行开发是非常新颖的,需要花费大量的时间和精力去学习和理解很多新的知识和概念。且对于开发团队而言,项目的维护和开发人员培养,增加的成本也是非常显著的。如何在利用DDD进行业务开发的同时降低开发人员的学习成本成为亟需解决的问题。
发明内容
本发明的主要目的在于提供一种代码自动生成方法、装置、设备及计算机可读存储介质,旨在解决如何在利用DDD进行业务开发的同时降低开发人员的学习成本的技术问题。
为实现上述目的,本发明提供一种代码自动生成方法,其特征在于,所述代码自动生成方法包括以下步骤:
确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
可选地,所述对所述事件风暴结果进行解析的步骤包括:
对所述事件风暴结果进行图像语义分割,得到多个分别包含不同语义的分割部分;
对各所述分割部分进行文字识别,分别确定各所述分割部分对应的目标文字。
可选地,所述根据解析后的事件风暴结果确定目标数据的步骤包括:
将所述语义与所述目标文字进行汇总,在预设内存中进行排序和分组,生成树结构;
将所述树结构作为目标数据。
可选地,所述依据所述目标数据对所述代码模板进行渲染的步骤包括:
确定所述代码模板中的占位部分,并确定与所述占位部分关联的语义特征;
将所述目标数据中与所述语义特征关联的特征数据填充至所述占位部分。
可选地,所述确定预设的代码模板的步骤包括:
获取输入的业务需求;
确定预设模板库中与所述业务需求关联的代码模板。
可选地,所述对所述事件风暴结果进行解析的步骤之后,还包括:
获取对所述事件风暴结果解析后的所有语义,并确定各所述语义中的限界上下文;
获取输入的公共包路径,根据所述公共包路径和所述限界上下文生成包结构;
并确定所述包结构中的文件夹与代码模板之间的关联关系。
可选地,所述并确定所述包结构中的文件夹与代码模板之间的关联关系的步骤之后,还包括:
获取输入的文件输出路径;
若监测到依据所述代码模板生成的目标代码文件,则将所述目标代码文件写入与所述代码模板关联的目标文件夹中;
依据所述包结构生成目标代码文件夹,并将所述目标代码文件夹按照所述文件输出路径输出。
此外,为实现上述目的,本发明还提供一种代码自动生成装置,所述代码自动生成装置包括:
模板确定模块,用于确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
风暴解析模块,用于对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
模板渲染模块,用于依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
此外,为实现上述目的,本发明还提供一种代码自动生成设备,所述代码自动生成设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码自动生成程序,其中:所述代码自动生成程序被所述处理器执行时实现如上所述的代码自动生成方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有代码自动生成程序,所述代码自动生成程序被处理器执行时实现如上所述的代码自动生成方法的步骤。
本发明提出的一种代码自动生成方法、装置、设备及计算机可读存储介质,通过确定预设的代码模板,得到符合领域驱动设计架构代码规范为基础框架,并对事件风暴进行需求分析,得到事件风暴结果,得到用户实际数据来源,对该事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据,将数据源转换为代码模板可识别的目标数据,有效与代码模板进行关联,进而依据该目标数据对代码模板进行渲染,得到目标代码文件,提升了代码转换的效率,且通过目标代码文件,可在基于领域驱动设计的开发团队中形成统一的领域语言,充分保证团队中每个项目结构保持一致,其开发人员无需过多关心项目中的代码规范,减少学习成本,同时通过目标代码文件的自动生成,团队中新加入的成员可以快速融入团队中进行开发,有效降低培养学习成本。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的代码自动生成设备的结构示意图;
图2为本发明代码自动生成第一实施例的流程示意图;
图3为本发明一实施例代码自动生成应用流程示意图;
图4为本发明一实施例事件风暴结果分割部分示意图;
图5为本发明一实施例事件风暴结果解析汇总示意图;
图6为本发明一实施例树结构示意图;
图7为本发明一实施例包结构示意图;
图8为本发明代码自动生成装置结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的代码自动生成设备结构示意图。
如图1所示,该代码自动生成设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对代码自动生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及代码自动生成程序。
在图1所示的代码自动生成设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明代码自动生成设备中的处理器1001、存储器1005可以设置在代码自动生成设备中,所述代码自动生成设备通过处理器1001调用存储器1005中存储的代码自动生成程序,并执行本发明实施例提供的代码自动生成方法。
本发明实施例提供了一种代码自动生成方法,参照图2,图2为本发明一种代码自动生成方法第一实施例的流程示意图。
本实施例中,所述代码自动生成方法包括:
步骤S100,确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
本实施例中,需要说明的是,在领域驱动设计中,DDD领域模型的很多概念如通用语言、界限上下文、实体、值对象、聚合、聚合根、领域事件都是通过事件风暴确定的,事件风暴是一项团队活动,领域专家与项目团队通过头脑风暴的形式,罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对每一个事件,标注出导致该事件的命令,再为每一个事件标注出命令发起方的角色。命令可以是用户发起,也可以是第三方系统调用或者定时器触发等,最后对事件进行分类,整理出实体、聚合、聚合根以及限界上下文。而事件风暴正是 DDD 战略设计中经常使用的一种方法,它可以快速分析和分解复杂的业务领域,完成领域建模。本实施例中,通过将事件风暴中输出的领域相关的内容,输入到解析引擎中,按照设置的领域代码的风格,将这些抽象层面的概念,自动解析和生成具体的领域代码和模板框架。使得开发人员只需要专注于战略设计层面的东西,将宝贵的精力用在理解业务,深入进行领域风暴,设计正确的领域模型,定义清楚领域动作等具有价值的事情上,无需花费过多的时间和精力用来学习和牢记新的代码规则,降低引入新的技术框架带来的成本,为团队和开发提效。
事件风暴结果是指用户在进行事件风暴时,在白板上对业务按照特定模板进行需求分析,并在梳理划分后形成自己的事件风暴结果。其中,特定的模板是指将关联的限界上下文、领域动作、领域事件以及领域对象划分至同一区域,并在该区域中将该限界上下文、领动作、领域事件以及领域对象分别按照不同的颜色进行标识。代码模板是指用户根据实际需求和习惯的代码风格预先制定好的模板文件,是符合领域驱动设计的技术架构对应代码规范为模板文件。该代码模板可由用户自行修改。针对不同的业务可以设计不同的代码模板,在进行自动代码生成时,需要确定所有预先设定的代码模板中当前所需的代码模板。具体地,在目标代码文件生成前确定需要的代码模板,并对事件风暴进行需求分析,得到事件风暴的结果。
步骤S200,对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
本实施例中,需要说明的是,目标数据是指可以与代码模板结合的数据,该目标数据由事件风暴结果转换而来。对事件风暴结果解析为采用人工智能算法获取到事件风暴结果的具体内容,也即将用户进行事件风暴的结果进行识别汇总,并在识别汇总后,按照预设规则进行转换,以生成目标数据。具体地,对事件风暴结果进行解析,得到解析后的事件风暴结果,根据该解析后的事件风暴结果确定目标数据。
步骤S300,依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
本实施例中,需要说明的是,目标代码文件是指包含了用户事件风暴后的事件风暴结果的符合DDD技术架构代码风格的代码文件。在确定了目标数据后,将该目标数据与之前确定的代码目标进行结合,完成对代码目标的渲染,最终生成目标代码文件。
参考图3,在实际应用中,进行需求分析,获取输出的事件风暴结果,选择代码文件,并获取用户输入的公共包路径以及文件输出路径,触发点击开始生成,解析事件风暴结果,包括有对限界上下文、领域动作、领域事件以及领域的识别,获取相关数据,在整理识别的结果后,加载模板文件,根据模板文件和数据生成代码文件,弹出文件窗口
本发明实施例中,确定预设的代码模板,得到符合领域驱动设计架构代码规范为基础框架,并对事件风暴进行需求分析,得到事件风暴结果,得到用户实际数据来源,对该事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据,将数据源转换为代码模板可识别的目标数据,有效与代码模板进行关联,进而依据该目标数据对代码模板进行渲染,得到目标代码文件,提升了代码转换的效率,且通过目标代码文件,可在基于领域驱动设计的开发团队中形成统一的领域语言,充分保证团队中每个项目结构保持一致,其开发人员无需过多关心项目中的代码规范,减少学习成本,同时通过目标代码文件的自动生成,团队中新加入的成员可以快速融入团队中进行开发,有效降低培养学习成本。
进一步地,基于本发明代码自动生成方法第一实施例,提出本发明代码自动生成方法第二实施例,所述步骤S200,对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据的步骤,包括:
步骤a,对所述事件风暴结果进行图像语义分割,得到多个分别包含不同语义的分割部分;
步骤b,对各所述分割部分进行文字识别,分别确定各所述分割部分对应的目标文字。
本实施例中,需要说明的是,图像语义分割是指对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或车等),从而进行区域划分。图像语义分割(SemanticSegmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。本实施例中,采用FCN(Fully Convolutional Networks,全卷积网络)对事件风暴结果进行图像语义分割,将事件风暴结果中的每个区域内部进行划分,具体而言,将同一区域进行语义分割,如按照限界上下文、领域动作、领域事件以及领域对象的语义分别划分,在划分之后,事件风暴结果中的每一个区域均可得到包含有不同语义的分割部分,针对各个分割部分进行文字识别,以获取该分割部分的具体内容,本实施例中,采用OCR(Optical Character Recognition,光学字符识别)的方式进行文字识别。其中,OCR是指电子设备,例如,扫描仪或数码相机等,检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。在确定了具备语义的分割部分后,采用OCR对该分割部分进行文字识别,以得到识别后的目标文字。每个分割部分均具备语义和目标文字。具体地,确定事件风暴结果后,对该事件风暴结果进行图像语义分割,以得到多个分别具备有不同语义的分割部分,对所有的分割部分进行文字识别,得到各个分割部分所对应的目标文字。
参考图4,图4中有用户按照特定模板进行梳理划分,形成自己的事件风暴结果。该事件风暴结果有三个大的区域,每个区域中分别由具备不同语义的分割部分,语义具体包括有限界上下文、领域动作、领域事件以及领域对象,在图4中通过不同的线条形式展现,图4中,语义为限界上下文包括有目标文字“Sale”;语义为领域对象包括有目标文字“Order”;语义为领域动作包括有目标文字“Create”、“Paid”、“Revoke”;语义为领域事件包括有目标文字“OrderCreated”、“OrderPaid”、“OrderRevoked”。在对分割部分包含的语义与目标文字进行关联后,将会进行汇总,参考图5,图5中包括有汇总后的数据。其中,限界上下文的语义下有销售域“Sale”,其对应对应有语义领域动作、领域对象、领域事件;该语义领域对象下有“Order”;该语义领域动作下有创建订单“Create”、支付订单“Paid”、撤销订单“Revoke”;该语义领域事件“下有“OrderCreated”、“OrderPaid”、“OrderRevoked”。
本实例中,通过采用人工智能算法对事件风暴结果进行解析,确保目标数据的准确性,进而提升代码生成的精准度,减少误差,有效提升代码生成效率。
进一步地,根据解析后的事件风暴结果确定目标数据的步骤包括:
步骤c,将所述语义与所述目标文字进行汇总,在预设内存中进行排序和分组,生成树结构;
步骤d,将所述树结构作为目标数据。
本实施例中,需要说明的是,确定语义与目标文字后,需要根据该语义与目标文字进一步生成代码模板可识别的目标数据,以实现将代码模板进行渲染。具体地,在确定语义与目标文字关联后,将与各语义关联的目标文字分别进行汇总,得到包含所有语义以及与之关联的目标文字的树结构,将该树结构作为目标数据。
参考图6,图6的树结构中,语义销售域“Sale”对应有语义领域动作“DomainAction”、领域对象“Domain”、领域事件“DomainEvent”;该语义领域动作“DomainAction”分别对应创建订单“Create”、支付订单“Paid”、撤销订单“Revoke”;该语义领域对象“Domain”对应“Order”;该语义领域事件“DomainEvent”对应“OrderCreated”、“OrderPaid”、“OrderRevoked”。
本实施例,通过将所述语义与所述目标文字进行汇总生成树结构,得到目标数据,为代码模板提供可识别的数据来源,提升代码生成的准确性。
进一步地,依据所述目标数据对所述代码模板进行渲染的步骤包括:
步骤e,确定所述代码模板中的占位部分,并确定与所述占位部分关联的语义特征;
步骤f,将所述目标数据中与所述语义特征关联的特征数据填充至所述占位部分。
本实施例中,需要说明的是,代码模板在生成时,会标记有占位部分,例如,占位符。通过该占位部分可以确定目标数据在对代码模板进行渲染时,进行变量替换的具体位置。其中,为了将占位部分与目标数据对应起来,将该占位部分与目标数据通过一个语义特征进行关联,例如,通过变量名称“Sale”进行关联,在该生成代码模板时,需要填充与“Sale”相关的内容时,在该位置写入“Sale”。具体地,确定代码模板中的占位部分,并获取该占位部分所关联的语义特征,基于该语义特征遍历目标数据,确定目标数据中与该语义特征关联的数据,作为特征数据,将该特征数据替换占位部分的变量,完成代码模板的填充。
本实施例中,通过在代码模板中标记占位部分,有效关联目标数据,提升目标代码文件生成的效率,并根据语义特征进行数据的填充,确保目标代码文件的有效性。
进一步地,确定预设的代码模板的步骤包括:
步骤g,获取输入的业务需求;
步骤h,确定预设模板库中与所述业务需求关联的代码模板。
本实施例中,需要说明的是,不同的业务对应的需求文件存在差别,所需的代码模板也可能存在差异,在进行代码模板的设计时,用户需要根据实际需求进行代码模板的编写,在项目业务确定后,可根据不同的业务需求,编写对应的代码模板,并将该代码模板与该业务需求进行关联存储,以使后续在基于领域驱动设计实现该业务需求时,可直接选择该业务需求对应的代码模板进行目标代码文件的生成。预设模板库是指存储代码模板的预设存储区域。具体地,获取当前输入的业务需求,基于该业务需求在预设模板库中查找与该业务需求关联的代码模板进行选择。可以理解的是,在一实施例中,用户在遇到新的业务需求时,可对预设模板库中的代码模板即使补充,或者在开发该新的业务需求时,进行代码模板的编写。
本实施例中,通过业务需求确定代码模板,提高目标代码文件与业务需求的匹配程度,提升目标代码文件的实用性。
进一步地,代码自动生成方法,还包括:
步骤i,获取对所述事件风暴结果解析后的所有语义,并确定各所述语义中的限界上下文;
步骤j,获取输入的公共包路径,根据所述公共包路径和所述限界上下文生成包结构;
步骤k,并确定所述包结构中的文件夹与代码模板之间的关联关系。
本实施例中,需要说明的是,公共包路径是指用户或者企业自己的包路径,每个用户或者企业对应的包路径有自己的规定,例如,com.generate.xxx,公共包路径需用户自己输入。限界上下文是指领域驱动设计中用来确定语义所在的领域边界,通过封装通用语言和领域对象,提供上下文环境,保证在领域之内的一些术语、业务相关对象等通用语言有一个确切的含义,没有二义性。在对事件风暴结果进行解析后,将会确定该事件风暴结果中的所有语义,确定所有语义中的限界上下文。包结构是指在公共包路径下各限界上下文对应的文件夹结构,代码模板在生成根据自身特征与包结构中对应的的文件夹进行关联,以在基于该代码模板生成目标代码文件后,将该目标代码文件写入关联的文件夹中。具体地,确定事件风暴结果解析后的所有语义,获取其中的限界上下文,获取用户输入的公共包路径,在该公共包路径下,生成该限界上下文的包结构。将该包结构下的文件夹与代码模板进行关联。
参考图7,在一实施例里,包结构包括公共包路径com.generate下的限界上下文sale,在该限界上下文中有固定的包结构,包括有application 应用层、controller 入口层、入口层下的dto 入参层、domain 领域层、领域层下的 aggregate 聚合根层、领域层下的domainservice 领域服务层、领域层下的entity 领域对象层、infrastructure 基础设施层、基础设施层下的config 配置层、基础设施层下的 event 事件层、基础设施层下的model 数据库实体层、基础设施层下的repository 仓储层的结构。
本实施例中,通过确定公共路径以及限界上下文的包结构,以确定目标代码文件写入的文件夹位置,对目标代码文件进行规范管理,提升该目标代码文件的利用率。
进一步地,并确定所述包结构中的文件夹与代码模板之间的关联关系的步骤之后,还包括:
步骤l,获取输入的文件输出路径;
步骤m,若监测到依据所述代码模板生成的目标代码文件,则将所述目标代码文件写入与所述代码模板关联的目标文件夹中;
步骤n,依据所述包结构生成目标代码文件夹,并将所述目标代码文件夹按照所述文件输出路径输出。
本实施例中,需要说明的是,在目标代码文件生成后,需要打包输出,故需要获取用户意图中需要该目标代码文件输出的路径。目标代码文件夹是指包含了包结构中所有文件夹的输出文件夹。在包结构中的文件夹写入目标代码文件后,按照包结构将所有文件夹打包,生成目标代码文件夹。具体地,获取用户输入的文件输出路径,当检测到依据代码模板生成的目标代码文件时,确定生成的包结构中该目标代码文件所基于的代码模板关联的目标文件夹,将该目标代码文件写入该目标文件夹中,按照包结构生成目标代码文件夹,将该目标代码文件夹按照用户输入的文件输出路径输出给用户。其中,该输出方式,可以为通过弹窗显示。
本实施例中,通过用户输入的文件输出路径输出最终的目标代码文件夹,符合用户真实意图,贴合用户需求,提升用户体验感。
此外,参考图8,本发明还提出一种代码自动生成装置,所述装置包括:
模板确定模块2001,用于确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
风暴解析模块2002,用于对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
模板渲染模块2003,用于依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
可选地,所述模板确定模块2001,还用于:
获取输入的业务需求;
确定预设模板库中与所述业务需求关联的代码模板。
可选地,所述风暴解析模块2002,还用于:
获取对所述事件风暴结果解析后的所有语义,并确定各所述语义中的限界上下文;
获取输入的公共包路径,根据所述公共包路径和所述限界上下文生成包结构;
并确定所述包结构中的文件夹与代码模板之间的关联关系。
可选地,所述风暴解析模块2002,还用于:
获取输入的文件输出路径;
若监测到依据所述代码模板生成的目标代码文件,则将所述目标代码文件写入与所述代码模板关联的目标文件夹中;
依据所述包结构生成目标代码文件夹,并将所述目标代码文件夹按照所述文件输出路径输出。
可选地,所述风暴解析模块2002,还用于:
对所述事件风暴结果进行图像语义分割,得到多个分别包含不同语义的分割部分;
对各所述分割部分进行文字识别,分别确定各所述分割部分对应的目标文字。
可选地,所述风暴解析模块2002,还用于:
将所述语义与所述目标文字进行汇总,在预设内存中进行排序和分组,生成树结构;
将所述树结构作为目标数据。
可选地,所述模板渲染模块2003,还用于:
确定所述代码模板中的占位部分,并确定与所述占位部分关联的语义特征;
将所述目标数据中与所述语义特征关联的特征数据填充至所述占位部分。
本发明代码自动生成装置的具体实施方式与上述代码自动生成方法各实施例基本相同,在此不再赘述。
此外,本发明还提出一种代码自动生成设备,其特征在于,所述代码自动生成设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码自动生成程序,其中:所述代码自动生成程序被所述处理器执行时实现本发明各个实施例所述的代码自动生成方法。
此外,本发明还提出一种计算机可读存储介质,其上存储有代码自动生成程序。所述计算机可读存储介质可以是图1的终端中的存储器20,也可以是如ROM(Read-OnlyMemory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干指令用以使得一台具有处理器的代码自动生成设备执行本发明各个实施例所述的代码自动生成方法。
可以理解的是,在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第N实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种代码自动生成方法,其特征在于,所述代码自动生成方法包括以下步骤:
确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
2.如权利要求1所述的代码自动生成方法,其特征在于,所述对所述事件风暴结果进行解析的步骤包括:
对所述事件风暴结果进行图像语义分割,得到多个分别包含不同语义的分割部分;
对各所述分割部分进行文字识别,分别确定各所述分割部分对应的目标文字。
3.如权利要求2所述的代码自动生成方法,其特征在于,所述根据解析后的事件风暴结果确定目标数据的步骤包括:
将所述语义与所述目标文字进行汇总,在预设内存中进行排序和分组,生成树结构;
将所述树结构作为目标数据。
4.如权利要求1所述的代码自动生成方法,其特征在于,所述依据所述目标数据对所述代码模板进行渲染的步骤包括:
确定所述代码模板中的占位部分,并确定与所述占位部分关联的语义特征;
将所述目标数据中与所述语义特征关联的特征数据填充至所述占位部分。
5.如权利要求1所述的代码自动生成方法,其特征在于,所述确定预设的代码模板的步骤包括:
获取输入的业务需求;
确定预设模板库中与所述业务需求关联的代码模板。
6.如权利要求1所述的代码自动生成方法,其特征在于,所述对所述事件风暴结果进行解析的步骤之后,还包括:
获取对所述事件风暴结果解析后的所有语义,并确定各所述语义中的限界上下文;
获取输入的公共包路径,根据所述公共包路径和所述限界上下文生成包结构;
并确定所述包结构中的文件夹与代码模板之间的关联关系。
7.如权利要求6所述的代码自动生成方法,其特征在于,所述并确定所述包结构中的文件夹与代码模板之间的关联关系的步骤之后,还包括:
获取输入的文件输出路径;
若监测到依据所述代码模板生成的目标代码文件,则将所述目标代码文件写入与所述代码模板关联的目标文件夹中;
依据所述包结构生成目标代码文件夹,并将所述目标代码文件夹按照所述文件输出路径输出。
8.一种代码自动生成装置,其特征在于,所述代码自动生成装置包括:
模板确定模块,用于确定预设的代码模板,并对事件风暴进行需求分析,得到事件风暴结果;
风暴解析模块,用于对所述事件风暴结果进行解析,并根据解析后的事件风暴结果确定目标数据;
模板渲染模块,用于依据所述目标数据对所述代码模板进行渲染,得到目标代码文件。
9.一种代码自动生成设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码自动生成程序,所述代码自动生成程序配置为实现如权利要求1至7中任一项所述的代码自动生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有代码自动生成程序,所述代码自动生成程序被处理器执行时实现如权利要求1至7中任一项所述的代码自动生成方法的步骤。
CN202210019207.8A 2022-01-10 2022-01-10 代码自动生成方法、装置、设备及计算机可读存储介质 Pending CN114035803A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210019207.8A CN114035803A (zh) 2022-01-10 2022-01-10 代码自动生成方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210019207.8A CN114035803A (zh) 2022-01-10 2022-01-10 代码自动生成方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114035803A true CN114035803A (zh) 2022-02-11

Family

ID=80147441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210019207.8A Pending CN114035803A (zh) 2022-01-10 2022-01-10 代码自动生成方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114035803A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509513A (zh) * 2022-11-16 2022-12-23 深圳市明源云采购科技有限公司 Grpc服务层代码生成方法、装置、设备及存储介质
US20230280989A1 (en) * 2022-03-04 2023-09-07 Microsoft Technology Licensing, Llc Synthesizing a computer program to include idiomatic function(s) and semantically-meaningful variable(s) using programming by example

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522013A (zh) * 2018-11-08 2019-03-26 网宿科技股份有限公司 一种业务功能的代码生成方法及装置
US20200210310A1 (en) * 2018-12-27 2020-07-02 Hewlett Packard Enterprise Development Lp Analytics-based architecture compliance testing for distributed web applications
CN111427561A (zh) * 2020-03-26 2020-07-17 中国建设银行股份有限公司 业务代码的生成方法、装置、计算机设备和存储介质
CN112114790A (zh) * 2020-08-28 2020-12-22 山东浪潮通软信息科技有限公司 一种基于概念数据模型的领域代码生成方法及装置
CN112668968A (zh) * 2020-12-24 2021-04-16 大唐互联科技(武汉)有限公司 一种基于领域驱动设计的仓储管理建模方法及系统
CN112988123A (zh) * 2021-05-06 2021-06-18 北京宇信科技集团股份有限公司 面向ddd的软件设计方法及系统
CN113326028A (zh) * 2021-05-12 2021-08-31 上海安畅网络科技股份有限公司 一种基于领域驱动设计与业务全景事件风暴的微服务化分解方法
CN113721892A (zh) * 2021-08-25 2021-11-30 上海东普信息科技有限公司 领域建模方法、装置、计算机设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522013A (zh) * 2018-11-08 2019-03-26 网宿科技股份有限公司 一种业务功能的代码生成方法及装置
US20200210310A1 (en) * 2018-12-27 2020-07-02 Hewlett Packard Enterprise Development Lp Analytics-based architecture compliance testing for distributed web applications
CN111427561A (zh) * 2020-03-26 2020-07-17 中国建设银行股份有限公司 业务代码的生成方法、装置、计算机设备和存储介质
CN112114790A (zh) * 2020-08-28 2020-12-22 山东浪潮通软信息科技有限公司 一种基于概念数据模型的领域代码生成方法及装置
CN112668968A (zh) * 2020-12-24 2021-04-16 大唐互联科技(武汉)有限公司 一种基于领域驱动设计的仓储管理建模方法及系统
CN112988123A (zh) * 2021-05-06 2021-06-18 北京宇信科技集团股份有限公司 面向ddd的软件设计方法及系统
CN113326028A (zh) * 2021-05-12 2021-08-31 上海安畅网络科技股份有限公司 一种基于领域驱动设计与业务全景事件风暴的微服务化分解方法
CN113721892A (zh) * 2021-08-25 2021-11-30 上海东普信息科技有限公司 领域建模方法、装置、计算机设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230280989A1 (en) * 2022-03-04 2023-09-07 Microsoft Technology Licensing, Llc Synthesizing a computer program to include idiomatic function(s) and semantically-meaningful variable(s) using programming by example
CN115509513A (zh) * 2022-11-16 2022-12-23 深圳市明源云采购科技有限公司 Grpc服务层代码生成方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
Staar et al. Corpus conversion service: A machine learning platform to ingest documents at scale
CN112181416B (zh) 一种从视觉稿直接生成ui代码的方法及装置
US10191889B2 (en) Systems, apparatuses and methods for generating a user interface by performing computer vision and optical character recognition on a graphical representation
CN115658041B (zh) 基于在线业务流程编排的低代码增强业务实现方法
CN114035803A (zh) 代码自动生成方法、装置、设备及计算机可读存储介质
CN109446059A (zh) 测试模板脚本的生成方法及装置
JP7364709B2 (ja) 機械学習および自然言語処理を利用したワクチン接種データの抽出および確認
CN115034200A (zh) 图纸信息提取方法、装置、电子设备及存储介质
Droettboom et al. The Gamera framework for building custom recognition systems
CN113419729A (zh) 基于组件化的前端页面搭建方法、装置、设备及存储介质
CN115562656A (zh) 页面的生成方法、装置、存储介质及计算机设备
CN115357699A (zh) 文本抽取方法、装置、设备及存储介质
CN113867694B (zh) 一种智能生成前端代码的方法和系统
CN111427684A (zh) 一种服务部署的方法、系统、及装置
US8935657B2 (en) Model-to-model transformation by kind
Altinbas et al. GUI element detection from mobile UI images using YOLOv5
US20160026441A1 (en) Recursive ontology-based systems engineering
CN110968307A (zh) 一种基于智能生成基础代码的微服务构建方法及装置
Chekanov Numeric computation and statistical data analysis on the java platform
CN117235527A (zh) 端到端容器化的大数据模型构建方法、装置、设备及介质
US20210272023A1 (en) Information processing system and information processing method
CN112668293B (zh) 数据报表处理方法
Bensoussan et al. Associations in MDE: a concern-oriented, reusable solution
CN115061690A (zh) 一种自动化代码生成方法以及装置
CN113822215A (zh) 设备操作指引文件生成方法、装置、电子设备及存储介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20220211