CN115438524A - 代码生成方法、装置、设备及存储介质 - Google Patents
代码生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115438524A CN115438524A CN202211395515.7A CN202211395515A CN115438524A CN 115438524 A CN115438524 A CN 115438524A CN 202211395515 A CN202211395515 A CN 202211395515A CN 115438524 A CN115438524 A CN 115438524A
- Authority
- CN
- China
- Prior art keywords
- source data
- code
- updated
- file
- target
- 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 55
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 15
- 230000015654 memory Effects 0.000 claims description 11
- 239000012634 fragment Substances 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 8
- 230000000007 visual effect Effects 0.000 description 15
- 238000004088 simulation Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008676 import Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 238000009960 carding Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Automation & Control Theory (AREA)
- Aviation & Aerospace Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及数据处理技术领域,提供一种代码生成方法、装置、设备及存储介质。所述方法包括:获取待处理的目标代码文件;识别所述目标代码文件中的初始代码的待更新区域;识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。本申请提供的代码生成方法通过划分待更新区域,并利用形参调用源数据,将对源数据的动态可变的需求参数化,并对代码生成过程进行了明确清晰的步骤划分,实现代码的快速生成,与人工梳理并导入源数据生成代码相比,提高了代码生成效率。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种代码生成方法、装置、设备及存储介质。
背景技术
在飞行模拟器领域,通过仿真工程代码代替真机控制单元实现系统功能,是飞行模拟设备软件研制过程中的常用技术手段。对于仿真工程代码,其中包含大量飞机仿真系统的接口数据,在代码生成时,接口数据通过人工导入。随着飞机系统复杂度的提升,飞机仿真系统接口的数据量也呈指数级增加,并且,在不同的仿真工程中,需要对接的接口不同,人工导入需要对每个工程对接的接口进行梳理和导入,费时费力,影响代码生成效率。
发明内容
本申请实施例提供一种代码生成方法、装置、设备及存储介质,用以解决现有的接口数据采用人工导入的方式,费时费力,影响代码生成效率的技术问题。
第一方面,本申请实施例提供一种代码生成方法,包括:
获取待处理的目标代码文件;
识别所述目标代码文件中的初始代码的待更新区域;
识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
在一个实施例中,所述获取与所述形参信息关联的目标源数据的步骤,包括:
获取源数据文件;
确定与所述形参信息关联的目标描述信息;
从所述源数据文件中获取与所述目标描述信息关联的目标源数据。
在一个实施例中,所述获取源数据文件的步骤,包括:
获取源数据的初始文件,并对所述初始文件进行合并去重处理,得到源数据总表;
对所述源数据总表进行切片处理,得到源数据文件。
在一个实施例中,所述获取与所述形参信息关联的目标源数据之前,还包括:
获取所述源数据文件的配置信息,并生成所述源数据文件的源数据描述信息;所述源数据描述信息用于描述所述源数据文件中的源数据;所述配置信息包括所述源数据描述信息对应的配置形参;
根据所述配置信息,将所述源数据描述信息与所述配置形参进行关联。
在一个实施例中,所述识别所述目标代码文件中的初始代码的待更新区域的步骤,包括:
将所述目标代码文件中的初始代码拆分成行片段信息;
基于所述行片段信息对所述初始代码进行逐行解析,识别所述初始代码中的关键字信息;所述关键字信息包括起止关键字;
根据所述起止关键字确定所述初始代码的待更新区域。
在一个实施例中,所述识别所述待更新区域中的形参信息的步骤,包括:
识别所述待更新区域中的各个分隔符;
根据各所述分隔符识别所述待更新区域中的形参信息;其中,所述分隔符用于标识所述形参信息,并将所述形参信息与所述初始代码中的其他代码字符分隔开。
在一个实施例中,所述待更新区域包括一个或多个,所述分隔符为可配置参数。
第二方面,本申请实施例提供一种代码生成装置,包括:
数据获取模块,用于获取待处理的目标代码文件;
第一识别模块,用于识别所述目标代码文件中的初始代码的待更新区域;
第二识别模块,用于识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
代码生成模块,用于利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
第三方面,本申请实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的代码生成方法的步骤。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的代码生成方法的步骤。
本申请实施例提供的代码生成方法、装置、设备及存储介质,通过识别待处理的目标代码文件中的初始代码的待更新区域,以及待更新区域中的形参信息,获取与形参信息关联的目标源数据,并对形参信息进行替换,实现对目标源数据的调用导入,可以快速生成初始代码对应的目标代码。通过划分待更新区域,并利用形参调用源数据,将对源数据的动态可变的需求参数化,并对代码生成过程进行了明确清晰的步骤划分,实现代码的快速生成,与人工梳理并导入源数据生成代码相比,提高了代码生成效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的代码生成方法的流程示意图;
图2是本申请实施例提供的代码生成装置的结构示意图;
图3是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的代码生成方法的流程示意图。参照图1,本申请实施例提供的代码生成方法,包括:
步骤100,获取待处理的目标代码文件;
在生成代码时,首先获取待处理的目标代码文件,该目标代码文件中包含初始代码,初始代码是在生成仿真工程代码时,需要重复编写的代码,是可以应用于不同工程中的模板文件。
步骤200,识别所述目标代码文件中的初始代码的待更新区域;
识别目标代码文件中的初始代码的待更新区域,在目标代码文件中的初始代码中,该待更新区域包括一个或多个,当有多个待更新区域时,多个待更新区域在初始代码中可以是连续的,也可以是不连续的。对于目标代码文件中的初始代码,可以将其划分为待更新区域和非更新区域,其中,在不同工程对应的目标代码文件中,非更新区域的代码可以是相同的,待更新区域的代码是可编辑配置的,具体需要编辑配置的内容为源数据对应的形参,通过配置形参将源数据参数化,可以避免对源数据直接进行操作修改。具体地,在目标代码文件的初始代码中,待更新区域的代码用于描述目标代码文件所需的源数据,以及需要对所需源数据执行的操作;非更新区域的代码用于调用待更新区域的代码描述的源数据,并执行对所需源数据的操作。
步骤300,识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
基于目标代码文件中的初始代码,识别待更新区域中的形参信息,并获取与该形参信息关联的目标源数据,其中,该形参信息为可配置信息,识别到的形参信息中包括一个或多个形参,不同的形参可以与不同的源数据关联,用于对源数据进行调用,通过配置形参,可以调用全部源数据的部分或全部。在本实施例中,目标源数据可以是接口源数据,在生成代码时,预设有可视化配置列表,该可视化配置列表为形参与源数据的关联列表,表征了形参与源数据之间的对应关系,可用于确定与形参信息关联的目标源数据。在可视化配置列表中,与源数据关联的各个形参,可供用户自定义配置,用户根据配置好的可视化列表,通过手工输入或点选等方式,在初始代码中配置相应的形参,即可调用对应的源数据,而无需手工导入或修改源数据,提高了代码生成效率。
进一步地,由于在同一个目标代码文件的初始代码中,待更新区域可以有一个或多个,同一个待更新区域中,也可以有一个或多个形参,不同的待更新区域中的形参,可以相同也可以不同。当同一个待更新区域中有多个形参时,多个形参可以是连续的,组成形参字符串,也可以是不连续的。在不同的工程中,将待更新区域设置为可编辑配置,实现二次开发,通过在目标代码文件的待更新区域中配置形参,实现对源数据的调用,可以提高目标代码文件在不同工程中的通用性。
步骤400,利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
利用目标源数据对形参信息进行替换,通过形参替换,实现对目标源数据的调用,可以避免对源数据直接进行修改,根据形参替换后的初始代码,生成对应的目标代码。优选地,对于飞机仿真系统而言,在生成飞行模拟器工程代码时,同一接口在不同的工程代码文件中,其源数据需要保持一致,对于传统的固定模板的代码生成方式而言,接口源数据对应的代码区域属于非转化区域。但不同的工程需要对接的接口不同,因此,需要手工梳理各工程需要对接的接口,并采用手工方式导入接口源数据;或者,针对不同工程需要对接的接口,对模板中接口源数据的非转化区域的代码进行修改,重复修改容易出错,导致同一接口源数据在不同工程代码文件中不一致。
基于可配置的形参信息,通过对形参的配置和替换,可以实现对部分或全部源数据的灵活调用,基于待更新区域中的代码,将代码内容的生成行为,与生成代码时所需的源数据及相应处理行为的描述进行了拆分。进一步地,由于通过形参信息可以调用源数据,也可以调用包含源数据的文件,因此,获取的目标源数据既可以是源数据本身,也可以是包含源数据的代码文件。基于此,当形参信息中包括多个形参时,获取的目标源数据还可以既包括源数据又包括包含源数据的代码文件,当形参调用的是包含源数据的代码文件时,在待更新区域的代码中描述加载的是一标准的函数代码模板文件。
本申请实施例提供的代码生成方法,将代码生成行为与源数据进行拆分,通过形参调用的方式,可以供用户根据需要对接的源数据,在代码文件的待更新区域中,配置源数据对应的形参,即可实现对部分或全部源数据的灵活调用和导入。通过形参调用的方式,无需针对不同工程的目标代码文件或模板,对源数据进行修改,确保了源数据的唯一性,以及源数据在不同工程中的一致性。其中,基于预设的可视化配置列表,用户根据需要对接的源数据,通过在可视化配置列表中点选、匹配或手工输入等方式,在代码文件的待更新区域中,配置源数据对应的形参。
识别到的形参信息中,一般包括多个形参,在利用目标源数据对形参信息进行替换时,可以每识别到一个形参,即获取对应的源数据对其进行替换,也可以在识别出所有的形参后,批量获取所有形参对应的源数据,对所有形参统一进行替换,实现对源数据的批量调用。
进一步地,步骤300中,获取与形参信息关联的目标源数据,具体包括:
步骤301,获取源数据文件;
步骤302,确定与所述形参信息关联的目标描述信息;
步骤303,从所述源数据文件中获取与所述目标描述信息关联的目标源数据。
可以理解的是,形参信息与目标源数据,可以是直接关联,也可以是间接关联,在确定与形参信息关联的接口源数据时,首先获取源数据文件,该源数据文件中包含当前工程或所有工程需要用到的全部源数据,通过对需要用到的源数据进行梳理得到,确定与形参信息关联的源数据的目标描述信息,以接口源数据为例,该目标描述信息包括接口名称、接口类型等用于描述接口的信息。基于该目标描述信息,确定需要对接的相应的接口,然后从源数据文件中获取与该目标描述信息关联的目标源数据,实现对源数据文件中的全部或部分源数据的灵活调用。
同样以接口源数据为例,形参信息与源数据间接关联时,预设的可视化配置列表中,包含各个接口的描述信息,以及与各个接口的描述信息关联的可配置形参,形参与源数据文件中的接口源数据通过接口的描述信息实现关联。
进一步地,在本申请实施例提供的代码生成方法中,除了识别待更新区域,还包括源数据准备,步骤301中,获取源数据文件,包括:
步骤3011,获取源数据的初始文件,并对所述初始文件进行合并去重处理,得到源数据总表;
步骤3012,对所述源数据总表进行切片处理,得到源数据文件。
首先获取包含源数据的初始文件,该初始文件可以有一个或多个,初始文件可以是列表文件,在此不做具体限定。对获取的初始文件进行合并去重处理,得到源数据总表,该源数据总表中包含同一个工程或所有工程所需的源数据,需要说明的是,包含源数据的初始文件一般有多个,以飞机仿真系统为例,随着飞机系统复杂度的提升,飞机仿真系统接口的数据量也呈指数级增加,不同的系统设有不同的接口,所有仿真系统的接口可以存在于一个或多个接口控制文件中,因此,包含接口源数据的初始文件可以有一个或多个,同一个接口的源数据也可以存在于不同的接口控制文件中。通过对合并去重处理,可以确保同一个接口的源数据在源数据总表中的唯一性,即确保源数据在源数据总表中的唯一性。
在进行合并去重处理时,首先对初始文件进行合并,得到所有初始文件对应的源数据中间表,基于该源数据中间表生成源数据字典,即对源数据中间表中的数据进行提取,并转化为数据字典的形式,遵循先入去重原则,通过比较源数据中间表的列名信息对存在重复的源数据进行去重,得到源数据总表。对生成的源数据总表进行切片处理,得到源数据文件,以便于后续与识别的形参信息进行匹配比对。
需要说明的是,源数据文件中的源数据,可供不同的工程在生成工程代码时调用,从而提高源数据的复用性。对于源数据文件的生成,可以是一次性的,也可以是重复性的;可以是在每次需要生成工程代码时,基于获取的各个初始文件生成;也可以是在生成源数据文件后,当有新增源数据时,基于新增源数据重新生成,以对源数据文件进行更新,在此不做具体限定。
步骤300中,获取与形参信息关联的目标源数据之前,还可以包括:
步骤310,获取所述源数据文件的配置信息,并生成所述源数据文件的源数据描述信息;所述源数据描述信息用于描述所述源数据文件中的源数据;所述配置信息包括所述源数据描述信息对应的配置形参;
步骤320,根据所述配置信息,将所述源数据描述信息与所述配置形参进行关联。
在获取与形参信息关联的目标源数据之前,需要先将形参信息与源数据进行关联,确定形参信息中各个形参与源数据之间的对应关系,生成可视化配置列表。具体地,获取源数据文件的配置信息,并生成源数据文件的源数据描述信息,该源数据描述信息用于描述源数据文件中的源数据,源数据文件的配置信息包括源数据描述信息对应的各个配置形参,该配置形参为可配置信息,可供用户自定配置。当源数据为接口源数据时,源数据描述信息即为包含接口名称、接口类型等信息的接口描述信息,根据配置信息,将源数据描述信息与配置形参进行关联。其中,配置信息还包括各配置形参与源数据之间的对应关系,基于该对应关系,将不同的形参分别与对应的源数据进行关联,生成源数据文件对应的可视化配置列表。基于该可视化配置列表,在识别到目标代码文件中待更新区域中的形参信息时,将识别到的形参信息中的形参与可视化配置列表中配置的形参进行匹配对比,确定对应的源数据描述信息,进而从源数据文件中获取与该源数据描述信息关联的目标源数据。
在本实施例中,通过识别待处理的目标代码文件中的初始代码的待更新区域,以及待更新区域中的形参信息,获取与形参信息关联的目标源数据,并对形参信息进行替换,实现对目标源数据的调用导入,可以快速生成初始代码对应的目标代码。通过划分待更新区域,并利用形参调用源数据,将对源数据的动态可变的需求参数化,并对代码生成过程进行了明确清晰的步骤划分,实现代码的快速生成,与人工梳理并导入源数据生成代码相比,提高了代码生成效率。
进一步地,在源数据准备阶段,通过对包含源数据的一个或多个初始文件进行合并去重处理,确保了源数据在源数据文件中的唯一性;并且,通过生成源数据文件中的源数据的描述信息,建立可配置形参与源数据文件中的源数据之间的关联关系,将源数据参数化,实现通过形参对源数据的调用。
更进一步地,将源数据对应的形参、以及初始代码的待更新区域中的形参信息设置为可配置,允许用户进行二次开发编辑,为用户提供可编辑的二次开发脚本,有利于满足不同用户、不同工程的代码生成需求。在不同的工程对应的目标代码文件中,用户只需要根据当前工程所需的源数据,在初始代码的待更新区域内配置所需源数据对应的形参,即可实现对所需源数据的调用,而无需直接对源数据进行修改,避免了对源数据的重复修改。
在一个实施例中,步骤200中,识别目标代码文件中的初始代码的待更新区域,包括:
步骤201,将所述目标代码文件中的初始代码拆分成行片段信息;
步骤202,基于所述行片段信息对所述初始代码进行逐行解析,识别所述初始代码中的关键字信息;所述关键字信息包括起止关键字;
步骤203,根据所述起止关键字确定所述初始代码的待更新区域。
在识别目标代码文件中的初始代码的待更新区域时,首先将目标代码文件中的初始代码拆分成多个行片段信息,遍历各个行片段信息从而对初始代码进行逐行解析,识别初始代码中的关键字信息,该关键字信息包括起止关键字,根据起止关键字确定初始代码的待更新区域。其中,起止关键字用于描述待更新区域的上下边界,基于上下边界划分初始代码的待更新区域,起止关键字例如“//append_start”、“//append_end”,“//append_start”为起始关键字,用于描述待更新区域的上边界,“//append_end”为终止关键字,用于描述待更新区域的下边界。在实际应用时,起止关键字也可以由用户自定义配置,在此不做具体限定。
用户在用于生成目标代码的目标代码文件中,通过添加包含起止关键字的关键字信息,定义初始代码中的待更新区域,例如,通过在目标代码文件中的初始代码中添加“//append_start”作为待更新区域的开始标志、“//append_end”作为待更新区域结束的标志,定义目标代码文件中的初始代码的待更新区域,从而对初始代码进行区域划分,有利于强化初始代码中不同代码区域的职能。
可以理解的是,同一个目标代码文件中的初始代码,可以通过添加多个起止关键字从而定义多个待更新区域,多个待更新区域可以是连续的,也可以是不连续的,对此不做限定。
进一步地,基于识别的待更新区域,步骤300中,在识别待更新区域中的形参信息时,包括:
步骤304,识别所述待更新区域中的各个分隔符;
步骤305,根据各所述分隔符识别所述待更新区域中的形参信息;其中,所述分隔符用于标识所述形参信息,并将所述形参信息与所述初始代码中的其他代码字符分隔开。
在识别到待更新区域的起始关键字时,对待更新区域中的代码进行解析,识别待更新区域中的各个分隔符,该分隔符为可配置参数,可以由用户自定义设置,对分隔符进行赋值。分隔符用户标识形参信息,具体用于标识形参信息中的各个形参,并将各个形参与待更新区域中的初始代码的其他代码字符分隔开。基于识别到的各个分隔符,识别待更新区域中的各个形参,得到对应的形参信息。
优选地,分隔符例如“%”、“&”、“$”等,通过分隔符标识形参时,将分隔符与相应的形参进行结合,以“Element1”作为形参为例,分隔符与形参结合以标识形参时,形如“%{Element1}”,在识别到分隔符后,识别分隔符后的“{ }”内的形参,从而得到对应的形参信息。同一个分隔符,可以用于标识一个形参,也可以用于标识多个连续的形参,在此不做限定。基于形参与源数据之间的关联关系,从源数据文件中获取形参“Element1”对应的源数据,并对“Element1”进行替换,即可实现对源数据的调用和导入,从而实现代码的快速生成。
当有多个待更新区域时,通过并行或顺序串行的方式,逐一识别各待更新区域中的分隔符及形参,利用源数据对形参进行替换时,可以是每识别一个待更新区域中的形参后,获取该待更新区域中的形参对应的源数据,并对形参进行替换;也可以是在识别所有待更新区域中的形参后,批量获取所有待更新区域中的形参对应的源数据,对所有的形参统一进行替换,实现对源数据的批量调用。
需要说明的是,在同一个待更新区域中,分割符可以有一个或多个,用于分别标识配置的一个或多个形参,多个形参可以是连续的,形成连续的形参字符串,也可以是不连续的,各形参通过分隔符与待更新区域中的其他代码字符分隔开。当同一个目标代码文件的初始代码中有多个待更新区域时,不同待更新区域中配置的形参所调用的源数据,可以是相同的,也可以是不同的,还可以是部分相同的,形参所在的字符串即为要生成的代码内容。同一个待更新区域中配置有多个连续形参时,对应的形参字符串例如“%{Element1、Element2、…、ElementN}”,或者,例如“%{Element1}、%{Element2}、…、%{ElementN}”等等。
在本实施例中,通过可配置关键字对初始代码进行区域划分,强化各代码区域的职能,并通过分隔符标识待更新区域中的形参,将对源数据的动态需求进行参数化,利用形参调用源数据代替手工导入源数据,提高了基于源数据的代码生成效率。
优选地,以下以接口源数据作为源数据,对本申请实施例提供的代码生成方法进行详细说明。
首先,本申请实施例提供的代码生成方法提供一种可编辑的二次开发脚本,该开发脚本的框架中需要进行二次开发的内容主要包括:待更新区域定义和形参配置。其中,待更新区域的定义通过添加起止关键字作为待更新区域的上下边界实现,形参配置基于分隔符实现,待更新区域的起止关键字、分隔符和形参,均是可配置的。
在代码生成过程中,主要包括源数据准备、目标代码文件获取、初始代码解析和逻辑添加等阶段。
在源数据准备阶段,首先获取包含接口源数据的一个或多个初始文件,对获取的初始文件进行合并去重处理,得到包含所有源数据的源数据总表,对该源数据总表进行切片处理,得到源数据文件,以便后续对源数据的调用。其中,获取的初始文件为包含接口源数据的接口控制文件(Interface Control Document,ICD),同一个初始文件中包含一个或多个接口的源数据,多个接口的源数据在文件中呈现为列表的形式,并以接口描述信息作为列名。在对初始文件进行合并去重处理时,首先对初始文件进行合并,得到一个包含所有初始文件中的源数据的源数据中间表,对该源数据中间表中的数据进行提取,并转化为数据字典,基于先入去重原则,通过列名对重复的接口源数据进行去重,得到源数据总表。通过合并去重处理,可以确保同一接口的源数据在源数据总表中的唯一性。
在源数据准备阶段,基于源数据总表,生成可视化配置列表,该可视化配置列表包含用户配置的各个形参,以及各形参与接口源数据的关联关系,形参与接口源数据存在一一对应的关联关系。具体地,获取用户对源数据总表的配置信息,该配置信息中包括各接口的源数据对应的形参,以及各形参与接口源数据的一一对应关系;根据源数据总表中各接口源数据的列名,生成各接口源数据的接口描述信息;基于获取的配置信息,将用户配置的各个形参与各接口的描述信息进行关联。接口描述信息包括接口名称、接口类型等,用于描述接口源数据,并与接口源数据关联,将用户配置的形参与接口描述信息关联,即可实现形参与接口源数据的关联,以便后续通过形参对接口源数据进行调用。
对于目标代码文件的获取,首先获取相应工程代码文件,该工程代码文件是对飞机仿真系统建模所需的关键信息进行抽象生成的模板,其中包括需要重复编写的代码,以及可以进行编辑配置的脚本框架,以便模板可以在飞机仿真系统相关的不同工程中复用。用户可以根据生成的可视化配置列表,以及需要对接的接口,在该工程代码文件中选择需要添加或更新的工程代码的待更新区域,该待更新区域通常为订阅发布参数区域或重复性高的函数区域。用户通过在待更新区域的上边界添加起始标志,如“//append_start”,在待更新区域的下边界添加终止标志,如“//append_end”,定义待更新区域;基于事先配置的可视化配置列表,结合需要对接的各个接口,在待更新区域中以点选或手动输入等方式,配置编辑各接口相应的形参,并利用事先赋值的分隔符对形参进行标识,得到相应的初始代码以及工程文件对应的目标代码文件。通过可视化配置列表,将接口源数据进行参数化,不仅可以减少在代码生成过程中,对接口源数据的手工梳理工作,还可以避免对接口源数据的修改,从而减少错误的产生。
对于获取的目标代码文件,在对初始代码的解析阶段,首先对目标代码文件中的初始代码进行划分,按照初始代码中的换行等特殊字符,将初始代码划分为多个行片段信息,遍历各行片段信息,对初始代码进行逐行解析,提取初始代码中的起止关键字,识别初始代码的待更新区域。对于识别出的待更新区域,通过对初始代码的逐行解析,识别待更新区域中的分隔符,并根据该分隔符,识别待更新区域中的各个形参,得到对应的形参信息。
对于逻辑添加阶段,基于识别到的各个形参,以及可视化配置列表,确定与识别到的各个形参关联的目标描述信息,并基于该目标描述信息,从源数据文件中获取与目标描述信息关联的接口源数据。将该目标接口源数据作为实参,对识别到的形参进行替换,实现对接口源数据的批量调用和导入,快速生成初始代码对应的目标代码。
在本实施例中,生成工程代码时,只需要基于可视化配置列表和可配置的分隔符,对工程代码文件进行相应的参数配置,即可基于源数据文件实现对接口源数据的批量调用和导入,而无需针对不同的工程需要对接的接口不同,手工导入或修改工程代码中的接口源数据,提高了代码的生成效率,同时,可以避免对接口源数据直接进行修改,确保了接口源数据在不同工程中的一致性,减少了错误的产生。
进一步地,对于源数据文件,通过对初始文件进行合并去重处理,确保了同一接口源数据在源数据文件中的唯一性,并通过配置形参,将对接口源数据的动态需求参数化,有利于对接口源数据的灵活调用,从而提高源数据文件在不同工程中的复用性,以及目标代码文件在不同工程中的的通用性。
下面对本申请实施例提供的代码生成装置进行描述,下文描述的代码生成装置与上文描述的代码生成方法可相互对应参照。
参照图2,本申请实施例提供的代码生成装置,包括:
数据获取模块10,用于获取待处理的目标代码文件;
第一识别模块20,用于识别所述目标代码文件中的初始代码的待更新区域;
第二识别模块30,用于识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
代码生成模块40,用于利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
在一个实施例中,所述第二识别模块30,还用于:
获取源数据文件;
确定与所述形参信息关联的目标描述信息;
从所述源数据文件中获取与所述目标描述信息关联的目标源数据。
在一个实施例中,所述第二识别模块30,还用于:
获取源数据的初始文件,并对所述初始文件进行合并去重处理,得到源数据总表;
对所述源数据总表进行切片处理,得到源数据文件。
在一个实施例中,所述代码生成装置还包括源数据配置模块,用于:
获取所述源数据文件的配置信息,并生成所述源数据文件的源数据描述信息;所述源数据描述信息用于描述所述源数据文件中的源数据;所述配置信息包括所述源数据描述信息对应的配置形参;
根据所述配置信息,将所述源数据描述信息与所述配置形参进行关联。
在一个实施例中,所述第一识别模块20,还用于:
将所述目标代码文件中的初始代码拆分成行片段信息;
基于所述行片段信息对所述初始代码进行逐行解析,识别所述初始代码中的关键字信息;所述关键字信息包括起止关键字;
根据所述起止关键字确定所述初始代码的待更新区域。
在一个实施例中,所述第二识别模块30,还用于:
识别所述待更新区域中的各个分隔符;
根据各所述分隔符识别所述待更新区域中的形参信息;其中,所述分隔符用于标识所述形参信息,并将所述形参信息与所述初始代码中的其他代码字符分隔开。
在一个实施例中,所述待更新区域包括一个或多个,所述分隔符为可配置参数。
图3例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communication Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的计算机程序,以执行代码生成方法的步骤,例如包括:
获取待处理的目标代码文件;
识别所述目标代码文件中的初始代码的待更新区域;
识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例所提供的代码生成方法的步骤,例如包括:
获取待处理的目标代码文件;
识别所述目标代码文件中的初始代码的待更新区域;
识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
另一方面,本申请实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行上述各实施例提供的方法的步骤,例如包括:
获取待处理的目标代码文件;
识别所述目标代码文件中的初始代码的待更新区域;
识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种代码生成方法,其特征在于,所述代码生成方法包括以下步骤:
获取待处理的目标代码文件;
识别所述目标代码文件中的初始代码的待更新区域;
识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
2.根据权利要求1所述的代码生成方法,其特征在于,所述获取与所述形参信息关联的目标源数据的步骤,包括:
获取源数据文件;
确定与所述形参信息关联的目标描述信息;
从所述源数据文件中获取与所述目标描述信息关联的目标源数据。
3.根据权利要求2所述的代码生成方法,其特征在于,所述获取源数据文件的步骤,包括:
获取源数据的初始文件,并对所述初始文件进行合并去重处理,得到源数据总表;
对所述源数据总表进行切片处理,得到源数据文件。
4.根据权利要求2所述的代码生成方法,其特征在于,所述获取与所述形参信息关联的目标源数据之前,还包括:
获取所述源数据文件的配置信息,并生成所述源数据文件的源数据描述信息;所述源数据描述信息用于描述所述源数据文件中的源数据;所述配置信息包括所述源数据描述信息对应的配置形参;
根据所述配置信息,将所述源数据描述信息与所述配置形参进行关联。
5.根据权利要求1所述的代码生成方法,其特征在于,所述识别所述目标代码文件中的初始代码的待更新区域的步骤,包括:
将所述目标代码文件中的初始代码拆分成行片段信息;
基于所述行片段信息对所述初始代码进行逐行解析,识别所述初始代码中的关键字信息;所述关键字信息包括起止关键字;
根据所述起止关键字确定所述初始代码的待更新区域。
6.根据权利要求5所述的代码生成方法,其特征在于,所述识别所述待更新区域中的形参信息的步骤,包括:
识别所述待更新区域中的各个分隔符;
根据各所述分隔符识别所述待更新区域中的形参信息;其中,所述分隔符用于标识所述形参信息,并将所述形参信息与所述初始代码中的其他代码字符分隔开。
7.根据权利要求6所述的代码生成方法,其特征在于,所述待更新区域包括一个或多个,所述分隔符为可配置参数。
8.一种代码生成装置,其特征在于,包括:
数据获取模块,用于获取待处理的目标代码文件;
第一识别模块,用于识别所述目标代码文件中的初始代码的待更新区域;
第二识别模块,用于识别所述待更新区域中的形参信息,并获取与所述形参信息关联的目标源数据;
代码生成模块,用于利用所述目标源数据对所述形参信息进行替换,生成所述初始代码对应的目标代码。
9.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的代码生成方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395515.7A CN115438524A (zh) | 2022-11-09 | 2022-11-09 | 代码生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395515.7A CN115438524A (zh) | 2022-11-09 | 2022-11-09 | 代码生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115438524A true CN115438524A (zh) | 2022-12-06 |
Family
ID=84252169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211395515.7A Pending CN115438524A (zh) | 2022-11-09 | 2022-11-09 | 代码生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115438524A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005661A1 (en) * | 2010-06-30 | 2012-01-05 | Bioproduction Group, Inc. | Method for Just-in-Time Compilation and Execution of Code Blocks within Discrete Event Simulations |
CN108958719A (zh) * | 2018-04-03 | 2018-12-07 | 北京航空航天大学 | 数字飞行器缓冲区信息处理源代码人工智能书写方法 |
CN109086046A (zh) * | 2018-08-02 | 2018-12-25 | 中国建设银行股份有限公司 | 一种基于接口规范文档的前端代码自动生成方法及系统 |
CN109508191A (zh) * | 2018-11-22 | 2019-03-22 | 北京腾云天下科技有限公司 | 一种代码生成方法及系统 |
CN109656543A (zh) * | 2018-12-21 | 2019-04-19 | 苏州绿控传动科技股份有限公司 | 一种基于文件关键字替换的自动代码生成方法 |
US10296673B1 (en) * | 2015-05-27 | 2019-05-21 | Xilinx, Inc. | Mixed-language simulation |
CN110597498A (zh) * | 2019-03-04 | 2019-12-20 | 南京航空航天大学 | AADL模型精化方法及其支持的Ada可执行代码自动生成方法 |
CN110968307A (zh) * | 2018-09-29 | 2020-04-07 | 北京数聚鑫云信息技术有限公司 | 一种基于智能生成基础代码的微服务构建方法及装置 |
CN115167891A (zh) * | 2022-07-07 | 2022-10-11 | 北京蓝天航空科技股份有限公司 | 接口控制文件的数据更新方法、装置、设备及存储介质 |
-
2022
- 2022-11-09 CN CN202211395515.7A patent/CN115438524A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005661A1 (en) * | 2010-06-30 | 2012-01-05 | Bioproduction Group, Inc. | Method for Just-in-Time Compilation and Execution of Code Blocks within Discrete Event Simulations |
US10296673B1 (en) * | 2015-05-27 | 2019-05-21 | Xilinx, Inc. | Mixed-language simulation |
CN108958719A (zh) * | 2018-04-03 | 2018-12-07 | 北京航空航天大学 | 数字飞行器缓冲区信息处理源代码人工智能书写方法 |
CN109086046A (zh) * | 2018-08-02 | 2018-12-25 | 中国建设银行股份有限公司 | 一种基于接口规范文档的前端代码自动生成方法及系统 |
CN110968307A (zh) * | 2018-09-29 | 2020-04-07 | 北京数聚鑫云信息技术有限公司 | 一种基于智能生成基础代码的微服务构建方法及装置 |
CN109508191A (zh) * | 2018-11-22 | 2019-03-22 | 北京腾云天下科技有限公司 | 一种代码生成方法及系统 |
CN109656543A (zh) * | 2018-12-21 | 2019-04-19 | 苏州绿控传动科技股份有限公司 | 一种基于文件关键字替换的自动代码生成方法 |
CN110597498A (zh) * | 2019-03-04 | 2019-12-20 | 南京航空航天大学 | AADL模型精化方法及其支持的Ada可执行代码自动生成方法 |
CN115167891A (zh) * | 2022-07-07 | 2022-10-11 | 北京蓝天航空科技股份有限公司 | 接口控制文件的数据更新方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
冯思喆等: "基于AADL的航天嵌入式软件Ada代码自动生成方法", 《计算机与现代化》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111160045B (zh) | 一种游戏资源文件翻译方法、装置及设备 | |
CN106446019B (zh) | 一种软件功能处理方法和装置 | |
CN109118353B (zh) | 风控模型的数据处理方法和装置 | |
CN109446059A (zh) | 测试模板脚本的生成方法及装置 | |
CN114168486A (zh) | 接口自动化测试方法、装置、介质、设备及程序 | |
CN109285024B (zh) | 在线特征确定方法、装置、电子设备及存储介质 | |
CN110837356A (zh) | 一种数据处理方法和装置 | |
CN116467171A (zh) | 自动化测试用例构建装置、方法、电子设备及存储介质 | |
CN115437641A (zh) | 基于接口数据的代码生成方法、装置、设备及存储介质 | |
US20210124752A1 (en) | System for Data Collection, Aggregation, Storage, Verification and Analytics with User Interface | |
CN112947907B (zh) | 一种创建代码分支的方法 | |
CN115438524A (zh) | 代码生成方法、装置、设备及存储介质 | |
JP7131119B2 (ja) | ソースアプリケーションからのソースデータをターゲットアプリケーションのターゲットデータへとマージするためのシステムおよび方法 | |
LU505740A1 (en) | Data monitoring method and system | |
CN115346607A (zh) | Dna样本查重方法及装置 | |
CN104991963B (zh) | 文件处理方法和装置 | |
CN109326330B (zh) | 生物信息分析工具的制作方法、装置及可存储介质 | |
CN113806327A (zh) | 一种数据库设计方法、装置及相关设备 | |
CN112328498A (zh) | 业务的测试方法和装置、存储介质、电子装置 | |
CN110674628A (zh) | 文件模板生成方法及系统 | |
CN112380205B (zh) | 一种分布式架构的特征自动生成方法和系统 | |
CN109492303A (zh) | 一种基于产品族脚本的推导规则自动生成方法 | |
CN115033997B (zh) | 基于ar的建筑施工设计系统 | |
CN110990475B (zh) | 批量任务插入方法、装置、计算机设备及存储介质 | |
CN115309391A (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: 20221206 |