CN117827176A - 一种代码生成方法、装置、电子设备及存储介质 - Google Patents
一种代码生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117827176A CN117827176A CN202311865171.6A CN202311865171A CN117827176A CN 117827176 A CN117827176 A CN 117827176A CN 202311865171 A CN202311865171 A CN 202311865171A CN 117827176 A CN117827176 A CN 117827176A
- Authority
- CN
- China
- Prior art keywords
- meta
- model
- model object
- target
- code
- 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 66
- 238000012795 verification Methods 0.000 claims description 70
- 230000005856 abnormality Effects 0.000 claims description 17
- 230000002159 abnormal effect Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,特别涉及一种代码生成方法、装置、电子设备及存储介质。该方法通过获取汽车开放架构的元模型实例信息和策略规则;元模型实例信息包含多个元模型对象的配置参数;策略规则包括目标元模型对象的标识和对应的代码生成规则;基于策略规则中的目标元模型对象的标识从元模型实例信息中确定出目标元模型对象的配置参数;基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件,从而使得其可以不局限于汽车开放架构的类型,能够灵活的针对各场景生成所需的代码。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种代码生成方法、装置、电子设备及存储介质。
背景技术
随着汽车行业的发展,汽车上安装的控制器也越来越多,软件开发的规模及成本也越来越大,为实现软件开发的“标准化”,开发过程的“自动化”,汽车开放系统架构(Automotive Open System Architecture,AUTOSAR)应运而生,以降低软件开发的成本及提高软件开发的便捷性。AUTOSAR是一个开放和标准化的汽车电子软件架构,是一家由汽车电子、半导体和软件行业的汽车制造商、供应商、服务提供商等公司组成的全球开发合作伙伴组织。
目前提供AUTOSAR开发工具链及基础软件的厂商很多,各厂商对AUTOSAR标准的理解和具体实现方式不同,导致它们的软件在某些方面是互不兼容的,这使得应用时的灵活性受到了限制,尤其是对于大型项目,如自动驾驶项目,由于代码量大、模块多、服务接口多且复杂,可能会涉及不同厂商的软件,导致上述的方式工作量大,不好维护,增加了开发成本。
发明内容
为了解决现有技术的问题,本申请实施例提供了一种代码生成方法、装置、电子设备及存储介质。所述技术方案如下:
一方面,提供了一种代码生成方法,所述方法包括:
获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;
基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;
基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
进一步的,所述策略规则还包括校验属性和校验策略;所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件之前,所述方法还包括:
针对校验属性为需要进行校验的目标元模型对象,按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果。
进一步的,所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象生成目标代码文件,包括:
在所述校验结果指示所述目标元模型对象无异常的情况下,基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件;
在所述校验结果指示所述目标元模型对象存在异常的情况下,生成异常提示信息;所述异常提示信息用于提示相关人员所述目标元模型对象存在异常。
进一步的,所述按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果,包括:
在所述目标元模型对象存在关联元模型对象的情况下,基于第一校验策略获取关联元模型对象的相关参数,若获取到的所述关联元模型对象的相关参数与第一预设参数相匹配,则生成第一校验结果,否则,生成第二校验结果;所述第一校验结果表征所述目标元模型对象无异常;所述第二校验结果表征所述目标元模型对象存在异常;
或者,基于第二校验策略获取所述目标元模型对象的回执参数,若获取到的所述目标元模型对象的回执参数与第二预设参数相匹配,则生成所述第一校验结果,否则,生成所述第二校验结果。
进一步的,所述代码生成规则包括代码生成属性和代码生成策略;所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件,包括:
针对代码生成属性为需要进行代码生成的目标元模型对象,基于所述目标元模型对象对应的代码生成策略和所述目标元模型对象的配置参数生成目标代码文件。
进一步的,所述获取汽车开放架构的元模型实例信息,包括:
获取汽车开放架构的系统描述文件;所述系统描述文件包含有汽车开放架构的元模型的属性信息;
对所述系统描述文件进行解析处理,得到所述汽车开放架构的元模型实例信息。
进一步的,所述获取汽车开放架构的元模型实例信息和策略规则,包括:
响应于用户在配置界面上的对象生成指令,获取所述汽车开放架构的元模型实例信息和策略规则。
另一方面,提供了一种代码生成装置,所述装置包括:
获取模块,用于获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;
确定模块,用于基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;
生成模块,用于基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述任一方面的代码生成方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述任一方面的代码生成方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一方面的代码生成方法。
本申请实施例通过获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件,从而使得其可以不局限于汽车开放架构的类型,解决了基础软件工具针对模块、服务、接口等校验及生成规则固化的问题,能够灵活的针对各场景增添修改策略规则,从而生成所需的代码。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种代码生成方法的流程示意图;
图3是本申请实施例提供的一种代码生成工具;
图4-7是本申请实施例提供的一种在生成目标代码文件过程中的配置界面的示意图;
图8是本申请实施例提供的一种代码生成装置的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,其所示为本申请实施例提供的一种实施环境的示意图。如图1所示,该应用环境可以包括终端10,以及位于终端10上的代码生成装置101,代码生成装置101通过获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括元模型对象的标识和对应的代码生成规则;基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
示例性的,终端10可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的电子设备。可选的,电子设备上运行的操作系统可以包括但不限于安卓系统、IOS系统、Linux系统、Windows系统、Unix系统等。
示例性的,当所生成的代码较为复杂,可能会涉及大量的接口调用和模块,为了轻量化终端10的系统,会将某些执行方法或者模块放置在服务器上,则终端10还可以结合服务器来实现代码生成,例如,可以通过终端10获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数,然后将目标元模型对象的配置参数和策略规则发送给服务器,服务器可以基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件,然后再将所述目标代码文件发送给终端10。具体的,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本实施例中,上述服务器以及终端10可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
请参阅图2,其所示为本申请实施例提供的一种代码生成方法的流程示意图,所述方法可以包括:
S201:获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则。
请参阅图3,其所示是本申请实施例提供的一种代码生成工具,可选的,其包括图形用户界面、模型服务层(可以包括模型框架和AUTOSAR工具平台)、数据格式解析工具和代码生成引擎,其中,图形用户界面是指采用图形方式显示的计算机操作用户界面,可以基于用户在图形用户界面上的操作生成相应的指令,使计算机可以基于该指令执行相应的程序。请参阅图4,其所示是一种在图形用户界面上展示的配置界面,用户可以通过在该配置界面上的接口传入所需文件,以使代码生成装置可以对文件中的数据进行处理,生成目标代码文件。在本实施例中,模型框架具体可以是EMF模型框架,其是一种基于Eclipse的模型框架,它是Eclipse MDA(Model Driven Architecture)的一个重要组成部分,是Eclipse中许多项目的基础(e.g,GEF),EMF可以将模型转换成高效的,正确的,和易于定制的Java代码。AUTOSAR工具平台(可以称为Artop平台)是AUTOSAR开发工具公共基础功能的实现。Artop平台本身是在Eclipse上开发的。模型服务层主要是管理EMF模型集合,EMF框架和Artop平台在其上提供了大量的工具类方法操作EMF模型。EMF框架本身提供了很多模型操作的应用程序编程接口(Application Programming Interface,API),除了模型编辑相关接口外,还包括模型验证、事务命令、模型比较等。利用EMF建模技术,能开发出一个强大的建模工具。Artop平台包含两类服务,一类服务是拓展了EMF框架和Eclipse工作空间管理等功能,另一类是面向AUTOSAR领域的模型管理服务。数据格式解析工具在本实施例中可以是用于解析jason文件的解析工具,代码生成引擎具体可以是Free Marker引擎,一种基于模板和要改变的数据,并用来生成输出文本(配置文件,源代码等)的工具。
本实施例中,汽车开放架构(后续将称为AUTOSAR)的元模型具体根据汽车开放架构的类型的不同,其对应的元模型也是不同的,当然,元模型对象也是不同的,通常来说,AUTOSAR可以分为自适应AUTOSAR(可以简称为AP)和经典AUTOSAR(可以简称为CP),这两种架构的所包含的层结构是不同的,当然其内所包含的软件组件、模块类型以及各软件组件、各模块之间的通信模式也是不同,AUTOSAR元模型是一种用来定义描述AUTOSAR的语言的UML2.0模型,具体可以是一种对软件组件和控制单元之类的结构来创建AUTOSAR软、硬件系统的图形化表示。元模型都是从EMF的核心模型Ecore继承和扩展而来。元模型对象可以是指元模型中的具体模块或者组件。元模型对象的属性信息可以包括元模型对象的标识,还可以包括元模型对象的关联关系(即与该元模型对象在某一应用场景下存在通信的元模型对象)。
在一个示例性的实施方式中,步骤S201中获取汽车开放架构的元模型实例信息具体可以包括:获取汽车开放架构的系统描述文件;所述系统描述文件包含有汽车开放架构的元模型的属性信息;对所述系统描述文件进行解析处理,得到所述汽车开放架构的元模型实例信息。可选的,步骤S201中获取汽车开放架构的策略规则具体可以包括:获取策略规则文件,利用jason解析工具对所述策略规则文件进行解析处理,得到策略规则。
在本实施例中,系统描述文件具体可以是一种ARXML文件,通过汽车开放系统架构(AUTOSAR)标准的可扩展标记语言模式定义(xml Schema efinition,XSD)文件进行约束,AUTOSAR的系统设计、配置等过程都可以通过ARXML文件来实现。通过对ARXML的配置,实现AUTOSAR组件软件的设计、生成以及配置的功能。具体可以基于EMF模型框架和Artop平台下的AUTOSAR元模型规范(即具体解析逻辑)对系统描述文件进行解析,从而可以生成对应的元模型实例信息,可选的,元模型实例信息可以包括多个元模型对象的配置信息(如关联元模型对象和功能参数),从而后续可以将元模型实例信息作为程序代码的入参,再基于对应的代码模版,从而可以生成目标代码文件。
在一个示例性的实施方式中,步骤S201还可以具体包括:响应于用户在配置界面上的对象生成指令,获取所述汽车开放架构的元模型实例信息和策略规则。请参阅图4,配置界面上设置有系统描述文件(如ARXML文件)的输入框和策略规则的输入框,具体的,可以是用户分别点击系统描述文件和策略规则对应的“添加”控件,从而可以从文件系统中选择待生成的选择相应的ARXML文件和策略规则文件;选择文件后,请参阅图5,在路径框中显示文件所在路径,例如,ARXML文件的选择路径为:C:\Users\admin\Desktop\cp.arxml;策略规则文件的选择路径为:C:\Users\admin\Desktop\cp\strategy,也可以是用户直接向输入框中输入ARXML文件和策略规则文件的路径。当用户点击图5中的“确定”控件,系统则会执行下文步骤S203-205,根据具体执行情况,会生成相应的文件,当若校验无异常并执行生成成功后弹出“生成成功”的会话框,并提示出生成代码的可下载链接,如图6所示。否则,弹出“生成失败”的对话框,包含下载错误结果表的链接,如图7所示。
在本实施例中,策略规则文件需要按照统一的文件夹目录结构放置,样例如下:
策略规则文件中存放的针对AUTOSAR元模型的策略配置,可选的,策略规则文件可以包括方法文件(如GenerateStrategy.jar)和属性文件(generateStrategy.json),其中,generateStrategy.json文件中元模型策略配置样例如下:
{执行针对AUTOSAR元模型对象:Machine
策略规则文件:com.autosar.generatecode.MachineGenerateStrategy
是否执行校验:true/false
是否生成代码:true/false
生成代码执行模板文件:MachineGenerate.ftl
}
上述示例中,策略规则中的目标元模型对象标识可以是Machine,方法文件中具体可以包含校验策略和代码生成策略;属性文件具体可以包含校验属性和代码生成属性,其中校验属性定义了是否需要对该元模型对象执行校验,代码生成属性定义了是否需要对该元模型对象执行代码生成。具体的,代码生成策略具体可以包含有生成代码执行模板文件和其他规则参数(例如模板路径、模板名称、构造的数据、代码文件输出目录及文件名),这些其他规则参数可以是直接存储于该代码生成策略中,也可以是通过一个预设的接口调用获取的,在此不做限制。
本实施例中,以上述代码生成策略MachineGenerateStrategy为例,其具体要求如下:在MachineGenerateStrategy文件中,需要继承的CommonGenerate,从而复写其中的校验策略,即check(List<EObject>eObjectList,GenerationStrategygenerationStrategy)和代码生成策略,即generateCode(List<EObject>eObjectList,GenerationStrategy generationStrategy),这两个方法就可以进行自行定制校验规则和生成规则。代码生成引擎基于Freemarker,后续可以基于Freemarker引擎生成相应的代码,因此,生成模板MachineGenerate.ftl需要符合Freemarker模板格式要求。父类CommonGenerate提供了调用引擎的接口callFreemarkerEngine(包含有StringtemplatePath,String templateFileName,Map data,String outputPath,StringoutputFileName),从而后续对应基于模板路径、模板名称、构造数据的步骤,然后输出目标代码文件对应的目录及文件名即可。
S203:基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数。
本实施例中,所述元模型实例信息还包括每个元模型对象对应的元模型对象的标识;步骤S203具体可以包括:基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的标识;将所述元模型实例信息中与所述目标元模型对象的标识对应的元模型对象确定为所述目标元模型对象。也就是说,并非元模型实例信息中的所有元模型对象均需要执行校验或者代码生成,只有在策略规则中存在的元模型对象的标识对应的元模型对象才会执行,所以可能只有一种元模型实例信息,但策略规则可以对应多种,如当代码生成失败后,可以通过修改策略规则中的相应的配置信息(如校验策略或者代码生成策略)来解决。
S205:基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
在一个示例性的实施方式中,在自动驾驶场景中,可能会涉及多个模块和接口,所以为了保证生成的代码的可行性,需要在执行代码生成步骤之前,就需要对元模型对象进行校验。所以步骤S205之前,所述方法还包括:针对校验属性为需要进行校验的目标元模型对象,按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果。
在一个示例性的实施方式中,上述具体校验过程可以是在所述目标元模型对象存在关联元模型对象的情况下,基于第一校验策略获取关联元模型对象的相关参数,若获取到的所述关联元模型对象的相关参数与第一预设参数相匹配(如可以是相关参数等于第一预设参数,也可以是相关参数属于第一预设参数所包含的范围),则生成第一校验结果,否则,生成第二校验结果;所述第一校验结果表征所述目标元模型对象无异常;所述第二校验结果表征所述目标元模型对象存在异常。校验过程还可以是基于第二校验策略获取所述目标元模型对象的回执参数,若获取到的所述目标元模型对象的回执参数与第二预设参数相匹配(如可以是回执参数等于第二预设参数,也可以是回执参数属于第二预设参数所包含的范围),则生成所述第一校验结果,否则,生成所述第二校验结果。实际上,为了进一步提高校验可靠性,还可以是上述两种校验方式的结合。
在一个示例性的实施方式中,步骤S205具体可以包括:在所述校验结果指示所述目标元模型对象无异常的情况下,基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件;在所述校验结果指示所述目标元模型对象存在异常的情况下,生成异常提示信息,并中断代码生成的程序;所述异常提示信息用于提示相关人员所述目标元模型对象存在异常。可以使得相关人员可以基于该异常提示信息快速进行错误排查。
在一个示例性的实施方式中,步骤S205具体可以包括:针对代码生成属性为需要进行代码生成的目标元模型对象,基于所述目标元模型对象对应的代码生成策略和所述目标元模型对象的配置参数生成目标代码文件。
本申请实施例可以通过Artop提供的接口可以获取ARXML文件解析的模型实例,根据策略规则对应的AUTOSAR元模型实例,然后可以根据ARXML文件的标签结构下存放的组件的各容器、参数定义信息,结合策略规则文件生成需要的配置代码,将生成的代码根据具体策略规则中的逻辑写入各代码文件,得到目标代码文件。从而不仅可以不局限于汽车开放架构的类型,还可以解决模块、服务、接口等校验及生成规则固化的问题,生成所需的代码。
与上述几种实施例提供的代码生成方法相对应,本申请实施例还提供一种代码生成装置,由于本申请实施例提供的代码生成装置与上述几种实施例提供的代码生成方法相对应,因此前述代码生成方法的实施方式也适用于本实施例提供的代码生成装置,在本实施例中不再详细描述。
请参阅图8,其所示为本申请实施例提供的一种代码生成装置的结构示意图,该装置具有实现上述方法实施例中代码生成方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图8所示,该代码生成装置800可以包括:
获取模块801,用于获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;
确定模块803,用于基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;
生成模块805,用于基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
在一个示例性的实施方式中,所述策略规则还包括校验属性和校验策略;所述装置还包括:
校验模块,用于针对校验属性为需要进行校验的目标元模型对象,按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果。
在一个示例性的实施方式中,生成模块,用于在所述校验结果指示所述目标元模型对象无异常的情况下,基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件;
在所述校验结果指示所述目标元模型对象存在异常的情况下,生成异常提示信息;所述异常提示信息用于提示相关人员所述目标元模型对象存在异常。
在一个示例性的实施方式中,校验模块,用于在所述目标元模型对象存在关联元模型对象的情况下,基于第一校验策略获取关联元模型对象的相关参数,若获取到的所述关联元模型对象的相关参数与第一预设参数相匹配,则生成第一校验结果,否则,生成第二校验结果;所述第一校验结果表征所述目标元模型对象无异常;所述第二校验结果表征所述目标元模型对象存在异常;
或者,基于第二校验策略获取所述目标元模型对象的回执参数,若获取到的所述目标元模型对象的回执参数与第二预设参数相匹配,则生成所述第一校验结果,否则,生成所述第二校验结果。
在一个示例性的实施方式中,所述代码生成规则包括代码生成属性和代码生成策略;生成模块,用于针对代码生成属性为需要进行代码生成的目标元模型对象,基于所述目标元模型对象对应的代码生成策略和所述目标元模型对象的配置参数生成目标代码文件。
在一个示例性的实施方式中,获取模块,用于获取汽车开放架构的系统描述文件;所述系统描述文件包含有汽车开放架构的元模型的属性信息;
对所述系统描述文件进行解析处理,得到所述汽车开放架构的元模型实例信息。
在一个示例性的实施方式中,获取模块,用于响应于用户在配置界面上的对象生成指令,获取所述汽车开放架构的元模型实例信息和策略规则。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的任意一种代码生成方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种代码生成方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的任意一种代码生成方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述方法实施例提供的任意一种代码生成方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种代码生成方法,其特征在于,所述方法包括:
获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括目标元模型对象的标识和对应的代码生成规则;
基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;
基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
2.根据权利要求1所述的方法,其特征在于,所述策略规则还包括校验属性和校验策略;所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件之前,所述方法还包括:
针对校验属性为需要进行校验的目标元模型对象,按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象生成目标代码文件,包括:
在所述校验结果指示所述目标元模型对象无异常的情况下,基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件;
在所述校验结果指示所述目标元模型对象存在异常的情况下,生成异常提示信息;所述异常提示信息用于提示相关人员所述目标元模型对象存在异常。
4.根据权利要求2所述的方法,其特征在于,所述按照所述目标元模型对象对应的校验策略对所述目标元模型对象进行校验,得到校验结果,包括:
在所述目标元模型对象存在关联元模型对象的情况下,基于第一校验策略获取关联元模型对象的相关参数,若获取到的所述关联元模型对象的相关参数与第一预设参数相匹配,则生成第一校验结果,否则,生成第二校验结果;所述第一校验结果表征所述目标元模型对象无异常;所述第二校验结果表征所述目标元模型对象存在异常;
或者,基于第二校验策略获取所述目标元模型对象的回执参数,若获取到的所述目标元模型对象的回执参数与第二预设参数相匹配,则生成所述第一校验结果,否则,生成所述第二校验结果。
5.根据权利要求1所述的方法,其特征在于,所述代码生成规则包括代码生成属性和代码生成策略;所述基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件,包括:
针对代码生成属性为需要进行代码生成的目标元模型对象,基于所述目标元模型对象对应的代码生成策略和所述目标元模型对象的配置参数生成目标代码文件。
6.根据权利要求1所述的方法,其特征在于,所述获取汽车开放架构的元模型实例信息,包括:
获取汽车开放架构的系统描述文件;所述系统描述文件包含有汽车开放架构的元模型的属性信息;
对所述系统描述文件进行解析处理,得到所述汽车开放架构的元模型实例信息。
7.根据权利要求1所述的方法,其特征在于,所述获取汽车开放架构的元模型实例信息和策略规则,包括:
响应于用户在配置界面上的对象生成指令,获取所述汽车开放架构的元模型实例信息和策略规则。
8.一种代码生成装置,其特征在于,所述装置包括:
获取模块,用于获取汽车开放架构的元模型实例信息和策略规则;所述元模型实例信息包含多个元模型对象的配置参数;所述策略规则包括元模型对象的标识和对应的代码生成规则;
确定模块,用于基于所述策略规则中的目标元模型对象的标识从所述元模型实例信息中确定出目标元模型对象的配置参数;
生成模块,用于基于所述目标元模型对象的代码生成规则和所述目标元模型对象的配置参数生成目标代码文件。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现如权利要求1~7中任一项所述的代码生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如权利要求1~7任一项所述的代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311865171.6A CN117827176A (zh) | 2023-12-29 | 2023-12-29 | 一种代码生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311865171.6A CN117827176A (zh) | 2023-12-29 | 2023-12-29 | 一种代码生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827176A true CN117827176A (zh) | 2024-04-05 |
Family
ID=90509280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311865171.6A Pending CN117827176A (zh) | 2023-12-29 | 2023-12-29 | 一种代码生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827176A (zh) |
-
2023
- 2023-12-29 CN CN202311865171.6A patent/CN117827176A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1582985B1 (en) | Test case inheritance controlled via attributes | |
CN111399853B (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
CN113986226B (zh) | 一种基于qiankun和Web Component的微前端架构及其构建方法 | |
US11113050B2 (en) | Application architecture generation | |
US20100333083A1 (en) | Software Asset Packaging and Consumption Method and System | |
WO2007011942A1 (en) | System and method for automatic or semi-automatic software integration | |
US20140208294A1 (en) | Domain scripting language framework for service and system integration | |
GB2459572A (en) | Producing configuration file wrappers for resources based on metadata | |
EP3447635A1 (en) | Application architecture generation | |
CN115185550A (zh) | 服务部署方法、装置、计算机设备及存储介质 | |
CN111831365A (zh) | 接口路由转发方法、系统、计算机设备及可读存储介质 | |
CN111159301A (zh) | 一种基于智能合约的数据创建方法、装置、设备及存储介质 | |
CN114895935A (zh) | 刷写车辆ecu的方法、装置、电子设备及存储介质 | |
US9244706B2 (en) | Command line shell command generation based on schema | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
CN113448793A (zh) | 一种兼容多操作系统的系统监控方法及装置 | |
CN110659022A (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN117827176A (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
US10958514B2 (en) | Generating application-server provisioning configurations | |
US10657476B2 (en) | Just in time compilation (JIT) for business process execution | |
CN112559444A (zh) | Sql文件迁移方法、装置、存储介质及设备 | |
US11216255B1 (en) | Open compiler system for the construction of safe and correct computational systems | |
CN116048604A (zh) | Web应用版本管理系统、方法及相应计算机设备和存储介质 | |
CN117579684A (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 |