CN115437641A - 基于接口数据的代码生成方法、装置、设备及存储介质 - Google Patents
基于接口数据的代码生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115437641A CN115437641A CN202211381267.0A CN202211381267A CN115437641A CN 115437641 A CN115437641 A CN 115437641A CN 202211381267 A CN202211381267 A CN 202211381267A CN 115437641 A CN115437641 A CN 115437641A
- Authority
- CN
- China
- Prior art keywords
- target
- code
- interface
- source code
- source
- 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 43
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000004140 cleaning Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 abstract description 13
- 238000012545 processing Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 7
- 238000004088 simulation Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000005284 excitation Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 210000001503 joint Anatomy 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005192 partition Methods 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
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
技术领域
本申请涉及飞行器技术领域,具体涉及一种基于接口数据的代码生成方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展,在代码开发过程中为减少开发人员的工作量,对于重复性较高的代码,通常生成相应的模板,在需要用到相应代码时,调用模板即可自动生成代码。但现有的代码自动生成方式所需的模板,大多为固定模板,而对于飞机模拟器的仿真系统与真机系统而言,在生成激励程序时,需要对真机系统的大量接口数据进行识别处理,以模拟真机系统不同模块的功能,涉及多个仿真工程。由于不同的工程需要对接的接口不同,并且,为了保证同一个接口的接口数据在不同工程中的一致性,基于现有的代码生成方式,接口数据在模板中对应的区域一般为非转化区域,因此,需要针对不同的工程分别生成不同的模板进行维护;或者,针对不同的工程需要对接的接口,对模板中接口数据对应的非转化区域进行修改,模板变更工作的重复性较高。可见,在现有的代码生成方式中,模板的通用性不高,且容易造成模板或接口数据不唯一。
发明内容
本申请实施例提供一种基于接口数据的代码生成方法、装置、设备及存储介质,用以解决现有的代码生成方式中,代码生成模板的通用性不高,且容易造成模板或接口数据不唯一的技术问题。
第一方面,本申请实施例提供一种基于接口数据的代码生成方法,包括:
获取待处理的源代码;
对所述源代码进行逐行解析,从所述源代码中提取目标形参;
获取所述目标形参对应的目标接口数据,并将所述目标接口数据作为目标实参对所述目标形参进行替换,生成所述源代码对应的目标代码。
在一个实施例中,所述对所述源代码进行逐行解析,从所述源代码中提取目标形参的步骤,包括:
对所述源代码进行逐行解析,以提取所述源代码中的关键字;所述关键字包括脚本标识和形参标识;
根据所述关键字中的脚本标识,将所述源代码划分为主程序代码和脚本描述代码;
根据所述关键字中的形参标识,从所述脚本描述代码中提取目标形参。
在一个实施例中,所述将所述目标接口数据作为目标实参对所述目标形参进行替换的步骤,包括:
根据所述形参标识在所述源代码中的第一位置信息,确定所述目标形参在所述源代码中的第二位置信息;
根据所述第二位置信息确定更新区域,将所述目标接口数据作为目标实参,并在所述更新区域中对所述目标形参进行替换。
在一个实施例中,所述脚本标识包括起始标识和终止标识,所述根据所述关键字中的脚本标识,将所述源代码划分为主程序代码和脚本描述代码的步骤,包括:
根据所述脚本标识中的起始标识确定脚本上边界,根据所述脚本标识中的终止标识确定脚本下边界;
根据所述脚本上边界和所述脚本下边界,将所述源代码划分划为主程序代码和脚本描述代码。
在一个实施例中,所述对所述源代码进行逐行解析,以提取所述源代码中的关键字的步骤,包括:
对所述源代码进行逐行拆分,将所述源代码拆分为多个行片段;
遍历各所述行片段,从各所述行片段中提取所述源代码中的关键字。
在一个实施例中,所述获取所述目标形参对应的目标接口数据的步骤,包括:
确定与所述目标形参关联的接口描述信息;
从预设的目标接口控制文件中获取所述接口描述信息对应的接口源数据;
根据所述源代码的代码类型,对所述接口源数据进行清洗处理,得到所述目标形参对应的目标接口数据。
在一个实施例中,所述获取所述目标形参对应的目标接口数据之前,还包括:
获取一个或多个模板接口控制文件;各所述模板接口控制文件中包含一个或多个接口的接口源数据;
在获取多个模板接口控制文件的情况下,对各所述模板接口控制文件进行合并去重处理,得到目标接口控制文件。
第二方面,本申请实施例提供一种基于接口数据的代码生成装置,包括:
源代码获取模块,用于获取待处理的源代码;
源代码解析模块,用于对所述源代码进行逐行解析,从所述源代码中提取目标形参;
目标代码生成模块,用于获取所述目标形参对应的目标接口数据,并将所述目标接口数据作为目标实参对所述目标形参进行替换,生成所述源代码对应的目标代码。
第三方面,本申请实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的基于接口数据的代码生成方法的步骤。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的基于接口数据的代码生成方法的步骤。
本申请实施例提供的基于接口数据的代码生成方法、装置、设备及存储介质,通过对源代码进行逐行解析,从源代码中提取目标形参,根据目标形参获取对应的目标接口数据,并将目标接口数据作为实参对目标形参进行替换,生成源代码对应的目标代码。通过对目标形参进行替换实现对目标接口数据的调用,提高了在不同的工程中对接口数据调用的灵活性,无需针对不同的工程需要对接的接口不同,分别生成不同的模板,也无需针对不同的工程需要对接的接口不同,对模板中接口数据对应的非转化区域进行修改,不仅提高了模板的通用性,还可以确保模板和接口数据的唯一性。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于接口数据的代码生成方法的流程示意图;
图2是本申请实施例提供的基于接口数据的代码生成装置的结构示意图;
图3是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的基于接口数据的代码生成方法的流程示意图。参照图1,本申请实施例提供的基于接口数据的代码生成方法,应用于飞行模拟器的激励程序的生成过程,可以将代码生成过程中源接口数据的汇总准备与代码生成行为进行明确拆分,提高了代码生成的复用性,具体包括:
步骤100,获取待处理的源代码;
首先获取待处理的源代码,该源代码为可编辑代码,是代码生成的模板文件,其中包括生成代码的主程序代码和调用接口数据的脚本描述代码;其中,脚本描述代码用于描述所需的接口数据,以及对接口源数据的相应处理行为;脚本描述代码为可编辑代码,可供用户对需要生成的代码内容进行编辑配置;主程序代码用于调用脚本描述代码,以调用脚本描述代码中描述的源数据,并根据脚本描述代码所描述的处理行为对调用的源数据进行处理。主程序代码针对不同的工程可以相同也可以不同,脚本描述代码针对不同的工程需要对接的接口不同,可以通过编辑配置实现对不同接口的接口数据的调用,从而提高源代码在不同工程中的复用性。
步骤200,对所述源代码进行逐行解析,从所述源代码中提取目标形参;
对获取的源代码进行逐行解析,从源代码中提取目标形参,该目标形参为可配置的关键字,用于标识接口数据。将形参设置为可配置,可以根据不同的程序设计语言和/或不同工程的代码文件中定义的关键字,结合用户习惯等,由用户自定义配置,提高主程序代码的灵活性。
目标形参具体配置在源代码的脚本描述代码区域,在不同的工程对应的代码文件中,主程序代码可以不变,根据当前工程需要对接的接口,在脚本描述代码中配置所需接口的源数据对应的形参即可。在生成代码时,根据脚本描述代码中配置的形参,调用源数据总表中的部分或全部接口源数据。
步骤300,获取所述目标形参对应的目标接口数据,并将所述目标接口数据作为目标实参对所述目标形参进行替换,生成所述源代码对应的目标代码。
根据提取的目标形参,获取目标形参对应的目标接口数据,并将获取的目标接口数据作为实参,对源代码中的目标形参进行替换,从而实现对模板接口数据的调用,生成源代码对应的目标代码,其中,目标接口数据包括一个或多个接口的接口源数据。即主程序代码根据脚本描述代码的描述,选取所需的一个或多个接口的接口源数据作为实参,并对形参进行替换,从而实现对部分或全部接口源数据的调用。目标形参对应的目标接口数据,可以是从接口数据的源数据总表中获取的,该接口源数据总表可以是基于生成激励程序时的部分或全部工程需要用到的接口的源数据生成的,不同接口的源数据通过不同的符号进行标识,并与不同的形参关联以供调用。
通过对形参的配置和替换,可以实现对接口源数据总表中的部分或全部接口源数据的灵活调用,基于脚本描述代码,将对接口源数据的准备行为,以及生成代码时所需的接口数据及相应处理行为的描述进行了拆分。进一步地,由于通过目标形参可以调用接口源数据,也可以调用包含接口源数据的文件,因此,获取的目标接口数据可以是接口源数据,也可以是包含接口源数据的代码文件。基于此,当形参信息中包括多个形参时,获取的目标接口数据还可以既包括接口源数据又包括包含接口源数据的代码文件,当形参调用的是包含接口源数据的代码文件时,在脚本描述代码中描述加载的是一标准的函数代码模板文件。
可知地,同一接口的接口数据是唯一的,需要保证同一接口的接口数据在不同的工程中的一致性,因此,在生成代码时,接口数据在模板中属于非自动转化区域;但不同的工程需要对接的接口不同,现有的代码生成方式,需要针对不同工程对接的接口不同,分别生成包含不同的模板文件,模板文件中包含的接口数据不同;或者对模板文件中接口数据对应的非转化区域进行变更;无论是分别生成模板文件,还是对模板文件中接口数据对应的非转化区域进行修改,都会导致模板通用性不高,还会导致模板或接口数据不唯一。并且,对模板文件中接口数据对应的非转化区域重复进行修改,还会造成同一接口的接口数据在不同的工程中存在差异,导致生成的代码存在错误,最终导致真机模拟系统无法生成正确的激励信号。而在本申请,通过形参调用的方式调用接口数据,针对不同的工程需要对接的接口,可以灵活调用相应的接口数据,而无需针对不同工程分别生成模板,也无需针对不同工程需要对接的接口不同,对模板中接口数据对应的非转化区域进行修改,减少了在不同工程中对模板或接口数据的变更,不仅可以确保同一接口的接口数据在不同工程中的一致性,还可以提高模板和源代码在不同工程中的复用性,从而提高模板的通用性。
在航空或飞行模拟器仿真领域中,经常会涉及仿真系统与真机系统设备软件接口对接的工作,即对两边的软件接口数据进行识别处理,转化成程序可编译执行的代码,从而实现软件之间的交互。其中,接口数据一般以ICD(Interface Control Document,接口控制文件)文件的形式呈现,通过合并不同的ICD文件等操作,可以生成飞行模拟器仿真系统相关的部分或全部工程所需的接口数据的源数据总表。在生成代码文件时,基于源代码中的主程序代码,通过形参从接口数据的源数据总表中调用相应的接口源数据,即可生成完整的目标代码,得到激励程序对应的代码文件,而无需针对不同的工程分别生成并维护代码生成模板,或在不同的工程中,针对需要对接的接口数据对模板中的非转化区域进行修改,确保了接口源数据的唯一性,便于维护。
进一步地,步骤200中,对源代码进行逐行解析,从源代码中提取目标形参,具体包括:
步骤201,对所述源代码进行逐行解析,以提取所述源代码中的关键字;所述关键字包括脚本标识和形参标识;
步骤202,根据所述关键字中的脚本标识,将所述源代码划分为主程序代码和脚本描述代码;
步骤203,根据所述关键字中的形参标识,从所述脚本描述代码中提取目标形参。
对源代码进行逐行解析,从源代码中提取关键字,该关键字包括脚本标识和形参标识。其中,在对源代码进行逐行解析时,可以按照代码中的特殊符号或标识,对源代码进行行划分,从而对源代码进行逐行解析,进而提取源代码中的脚本标识和形参标识等关键字。
提取的关键字包括脚本标识和形参标识,对于脚本标识,根据脚本标识对应的关键字将源代码划分为主程序代码和脚本描述代码,根据提取的形参标识,从脚本描述代码中提取目标形参。其中,脚本标识用于从源代码中标识出脚本描述代码的代码区域,从而将源代码划分为主程序和脚本描述代码。在不同的工程项目中,主程序代码可以不变,脚本描述代码可编辑配置,从而调用不同的接口数据,满足不同工程项目对不同接口数据的调用需求。脚本标识对应的关键字为可配置的特殊字符或字符串,例如“//append_start”、“//append_end”等。对于形参标识,在将源代码划分为主程序代码和脚本描述代码后,通过逐行解析,根据形参标识从脚本描述代码中提取目标形参。
需要说明的是,在同一个工程的源代码中,脚本标识可以有多个,用于划分出多个脚本描述代码对应的代码区域,多个代码区域可以是连续的,也可以是不连续的;脚本描述代码的同一个代码区域中,可以配置有一个或多个形参,多个形参可以是连续的,形成连续的形参 字符串,也可以是不连续的,各形参通过形参标识与脚本描述代码中的其他代码字符分隔开。当脚本描述代码有多个代码区域时,不同代码区域中配置的形参所调用的接口源数据,可以是相同的,也可以是不同的,形参所在的字符串即为要生成的代码内容。
通过主程序代码和脚本描述代码,将接口数据的调用与程序代码的生成行为拆分开,主程序代码不变,脚本描述代码可编辑配置,提高了对接口数据调用的灵活性,且无需针对不同工程分别维护接口源数据,确保了源数据的唯一性。
进一步地,步骤201中,对源代码进行逐行解析,从源代码中提取关键字,包括:
步骤2011,对所述源代码进行逐行拆分,将所述源代码拆分为多个行片段;
步骤2012,遍历各所述行片段,从各所述行片段中提取所述源代码中的关键字。
在对源代码进行逐行解析时,首先对源代码进行逐行拆分,具体是根据源代码中用于标识代码换行的特殊标识符,对源代码进行逐行拆分,得到源代码对应的多个行片段。遍历各个行片段进行解析,从而对源代码进行逐行解析,根据解析结果从各行片段中提取源代码中的关键字。
进一步地,脚本标识包括起始标识和终止标识,步骤202中,根据提取的关键字中的脚本标识,将源代码划分为主程序代码和脚本描述代码,具体包括:
步骤2021,根据所述脚本标识中的起始标识确定脚本上边界,根据所述脚本标识中的终止标识确定脚本下边界;
步骤2022,根据所述脚本上边界和所述脚本下边界,将所述源代码划分划为主程序代码和脚本描述代码。
脚本标识中的起始标识如“//append_start”,用于描述脚本描述代码的脚本上边界,同样地,终止标识如“//append_end”,用于描述脚本描述代码的脚本下边界。根据起始标识和终止标识,确定脚本描述代码的上下边界;根据脚本描述代码的上下边界,将源代码划分为脚本描述代码和主程序代码。
如上所述,在源代码中,脚本标识可以有多个,因此,脚本描述代码的起始标识和终止标识均可以有多个,起始标识与终止标识具有一一对应关系,分别用于描述脚本描述代码同一个代码区域的上下边界,多个起始标识和多个终止标识,将脚本描述代码划分为多个代码区域。当脚本描述代码有多个代码区域,且说个代码区域连续时,上一代码区域的下边界与下一代码区域的上边界相邻,即上一代码区域的终止标识,与下一代码区域的起始标识在源代码中,位于相邻的代码行。可知地,脚本描述代码的代码区域,可以 存在于不同的代码文件中,有利于对脚本描述代码不同代码区域进行形参配置,在对源代码进行解析时,对多个代码文件中的脚本描述代码进行合并即可。
进一步地,在对脚本描述代码进行形参配置时,需要事先配置形参与接口源数据的对应关系,用户可以根据实际需要以及自身习惯,对不同接口的接口源数据配置不同的形参,配置的形参与接口名称、接口类型等接口描述信息关联,接口描述信息与接口源数据关联,形成接口源数据的形参配置列表。在脚本配置阶段配置脚本描述代码中的形参信息时,用户根据需要对接的接口的接口名称、接口类型等接口描述信息,基于形参配置列表通过手动输入或点选等方式,在脚本描述代码中配置对应的形参;在代码生成阶段,根据解析出的形参,确定与形参关联的接口描述信息,从而调用对应的接口源数据,生成源代码对应的目标代码。
在对源代码进行解析时,首先对源代码进行行划分,将源代码拆分成多个行片段,存入一个第一变量中,对该第一变量中的行片段进行遍历,逐行解析源代码,当解析到“//append_start”等起始标识时,将从脚本描述代码对应的字符串行片段中解析出的形参标识等内容存到另一第二变量中,直到解析到“//append_end”等终止标识时,对脚本描述代码的解析结束。根据第二变量中的内容,调用对应的目标接口数据,生成的批量代码内容写入到第二变量中,完成形参替换,从而生成源代码对应的目标代码。
需要说明的是,上述起始标识“//append_start”、终止标识//append_end”仅用于示例性说明,并不构成限定,在实际应用时,起始标识和终止标识也是可配置的,用户可以根据自身习惯和/或使用的编程语言的不同,自定义配置起始标识和终止标识,并在配置编辑源代码时,通过手动编写或点选等方式,在脚本描述代码的上行添加自定义配置的起始标识,用于描述脚本描述代码的上边界,并在脚本描述代码的下行添加自定义配置的终止标识,用于描述脚本描述代码的下边界,从而明确脚本描述代码的上下边界,便于后续代码生成时对脚本描述代码和主程序代码的划分。
在本实施例中,通过对源代码进行逐行解析,从源代码中提取目标形参,根据目标形参获取对应的目标接口数据,并将目标接口数据作为实参对目标形参进行替换,生成源代码对应的目标代码。通过对目标形参进行替换实现对目标接口数据的调用,提高了在不同的工程中对接口数据调用的灵活性,无需针对不同的工程需要对接的接口不同,分别生成不同的模板,也无需针对不同的工程需要对接的接口不同,对模板中接口数据对应的非转化区域进行修改,不仅可以提高模板的通用性,还可以确保模板或接口数据的唯一性。
进一步地,通过配置脚本标识和形参标识,将源代码划分为主程序代码和脚本描述代码,对接口数据与代码生成行为进行了明确拆分,保证了对接口数据的调用灵活性;在对源代码进行逐行解析时,通过划分行片段,根据形参标识对脚本描述代码对应的行片段进行解析,从而提取目标形参,确保了对脚本描述代码的解析效率,从而保证了代码的生成效率。
在一个实施例中,步骤300中,将目标接口数据作为目标实参,对目标形参进行替换,具体包括:
步骤301,根据所述形参标识在所述源代码中的第一位置信息,确定所述目标形参在所述源代码中的第二位置信息;
步骤302,根据所述第二位置信息确定更新区域,将所述目标接口数据作为目标实参,并在所述更新区域中对所述目标形参进行替换。
在将目标接口数据作为目标实参,对目标形参进行替换时,首先根据形参标识在源代码中的第一位置信息,确定目标形参在源代码中的第二位置信息。其中,第一位置信息可以用于指示形参标识在源代码中所处的行数,以及在该行中的第几个字符;同理,第二位置信息可以用于指示目标形参在源代码中所处的行数,以及在该行中的第几个字符。
一般地,形参标识大多采用无实际意义的特殊字符,或由多个特殊字符组合成的字符串,例如“${}”,该形参标识是可配置的,通过形参标识与目标形参组合的方式,用于标识目标形参在源代码中所在的位置。具体地,以“${}”作为形参标识、以字母“A”作为一目标形参为例,形参标识与目标形参的组合,可以是形如“${A}”,在此基础上,在确定形参标识“${}”的第一位置信息后,目标形参“A”的第二位置信息也就随之确定。
在确定目标形参在源代码中的第二位置信息后,根据目标形参在源代码中的第二位置信息,确定更新区域,在上述形如 “${A}”的形参标识和目标形参的组合方式中,该更新区域即形参标识“${}”中符号“{}”内的区域,将获取的目标接口数据作为目标实参,并在更新区域中对目标形参“A”进行替换,也即,将目标接口数据加载到“{}”内的更新区域中,从而完成对目标接口数据的调用,以及对目标形参的替换。其中,需要说明的是,一个形参标识可以用于标识一个或多个目标形参,例如“${A}、${B}、${C}”或“${A、B、C}”,根据同一个形参标识的第一位置信息,可以确定一个或多个目标形参的第二位置信息,也即,同一个形参标识中的“{}”内的更新区域中,可以调用一个或多个接口的接口数据,在此不做具体限定。
在对目标形参进行替换时,可以是在对脚本描述代码的解析过程中,每解析到一个目标形参,即调用该目标形参对应的目标接口数据进行形参替换,也可以是在完成对脚本描述代码的解析后,根据解析出的目标形参,批量调用所有目标形参对应的目标接口数据进行形参替换,在此同样不做具体限定。
需要说明的是,由于形参与作为实参的目标接口数据的字符串长度可能不同,在进行形参替换后,源代码的其他字符串的位置信息可能会对应发生变化。因此,在进行形参替换时,可以对获取的目标接口数据中各接口的源数据的字符串长度进行统计,基于形参所在的第二位置信息以及各接口的源数据的字符串长度进行计算,从而确定各形参对应的接口源数据的更新区域,确保代码生成的准确性。
进一步地,步骤300中,获取目标形参对应的目标接口数据,包括:
步骤303,确定与所述目标形参关联的接口描述信息;
步骤304,从预设的目标接口控制文件中获取所述接口描述信息对应的接口源数据;
步骤305,根据所述源代码的代码类型,对所述接口源数据进行清洗处理,得到所述目标形参对应的目标接口数据。
在获取目标形参对应的目标接口数据时,确定与目标形参关联的接口描述信息,该接口描述信息可以包括接口名称、接口类型等用于描述接口的信息,根据该接口描述信息,从预设的目标接口控制文件中获取对应的接口源数据,根据源代码的代码类型,对获取的接口源数据进行清洗,得到目标接口数据。其中,对接口源数据的清洗,是在确保接口源数据对应的接口信息不变的前提下,对接口源数据中的不合法字符进行清洗,包括根据源代码的代码类型,通过字符转换等方式,对接口源数据的字符串中不符合源代码的语法定义的非法字符进行替换,例如,将接口源数据字符串中的“.”和“、”等字符替换为“_”,使其符合源代码语法的变量定义。
更进一步地,步骤300中,在获取目标形参对应的目标接口数据之前,还包括:
步骤001,获取一个或多个模板接口控制文件;各所述模板接口控制文件中包含一个或多个接口的接口源数据;
步骤002,在获取多个模板接口控制文件的情况下,对各所述模板接口控制文件进行合并去重处理,得到目标接口控制文件。
在获取目标形参对应的目标接口数据之前,需要先基于所有需要对接的接口源数据生成一个目标接口控制文件作为接口源数据模板,具体地,首先获取一个或多个模板接口控制文件,各模板接口控制文件中包含一个或多个接口的接口源数据,多个接口的接口源数据,以列表的形式组合形成模板接口控制文件,列表的列名信息可以作为接口描述信息。
在获取多个模板接口控制文件的情况下,多个模板接口控制文件可以包含一个或多个工程所需的接口源数据,对多个模板接口控制文件进行合并去重处理,得到目标接口控制文件。生成的目标接口控制文件包含飞机仿真系统对应的部分或全部工程所需的接口源数据,在生成同一个工程对应的工程代码时,基于配置的形参信息,可以灵活调用目标接口控制文件中的部分或全部接口源数据。
在进行合并去重处理时,将多个模板接口控制文件中的接口源数据汇总合并为一个源数据总表,由于同一个接口的源数据可能存在于多个模板接口控制文件中,对源数据总表中的接口源数据进行提取,并转换为数据字典的形式,通过列名信息,对重复的接口源数据进行去重处理,保证同一接口的源数据在目标接口控制文件中的唯一性。在目标接口控制文件中,不同接口的接口数据对应的不同的形参,各接口的接口数据对应的形参可配置,在不同工程的源代码中,用户根据形参标识通过编辑配置脚本描述代码中的形参,即可实现对不同接口数据的调用,而无需针对不同的工程对接口数据本身进行更改,确保了接口数据在不同工程中的一致性。
进一步地,为保证合并去重处理的准确性,在对多个模板接口控制文件进行合并去重之前,可以按照设定规则,对各模板接口控制文件中的接口源数据进行过滤清洗。具体包括对接口源数据中的特定字符进行统一转换或替换,例如,将接口源数据字符串中的“.”和“、”等字符统一替换为“_”,形成统一标准,从而可以在进行去重处理时,避免同一接口的源数据因字符不同而导致去重失败,还可以在调用目标接口数据时,避免由于接口源数据中的字符不符合源代码的语法定义导致调用失败。
在本实施例中,通过形参标识确定更新区域,在更新区域内对目标形参进行替换,实现对目标接口数据的调用。并在调用目标接口数据时,根据目标形参对应的接口描述信息,调用接口源数据,根据源代码的代码类型对接口源数据进行清洗,可以避免在目标接口控制文件中对接口源数据进行修改,从而减少了在不同工程中对目标接口控制文件的更改,保证了接口源数据的唯一性。
进一步地,在接口源数据准备阶段,对包含不同接口源数据的一个或多个模板接口控制文件进行汇总,形成源数据总表,通过合并去重处理,进一步确保了同一接口的源数据在源数据总表中的唯一性,便于不同工程的源代码对接口源数据的灵活调用,且可以保证同一接口的接口源数据在不同工程中的一致性。
下面对本申请实施例提供的基于接口数据的代码生成装置进行描述,下文描述的基于接口数据的代码生成装置与上文描述的基于接口数据的代码生成方法可相互对应参照。
参照图2,本申请实施例提供的基于接口数据的代码生成装置,包括:
源代码获取模块10,用于获取待处理的源代码;
源代码解析模块20,用于对所述源代码进行逐行解析,从所述源代码中提取目标形参;
目标代码生成模块30,用于获取所述目标形参对应的目标接口数据,并将所述目标接口数据作为目标实参对所述目标形参进行替换,生成所述源代码对应的目标代码。
在一个实施例中,所述源代码解析模块20,还用于:
对所述源代码进行逐行解析,以提取所述源代码中的关键字;所述关键字包括脚本标识和形参标识;
根据所述关键字中的脚本标识,将所述源代码划分为主程序代码和脚本描述代码;
根据所述关键字中的形参标识,从所述脚本描述代码中提取目标形参。
在一个实施例中,所述脚本标识包括起始标识和终止标识,所述源代码解析模块20,还用于:
根据所述脚本标识中的起始标识确定脚本上边界,根据所述脚本标识中的终止标识确定脚本下边界;
根据所述脚本上边界和所述脚本下边界,将所述源代码划分划为主程序代码和脚本描述代码。
在一个实施例中,所述源代码解析模块20,还用于:
对所述源代码进行逐行拆分,将所述源代码拆分为多个行片段;
遍历各所述行片段,从各所述行片段中提取所述源代码中的关键字。
在一个实施例中,所述目标代码生成模块30,还用于:
根据所述形参标识在所述源代码中的第一位置信息,确定所述目标形参在所述源代码中的第二位置信息;
根据所述第二位置信息确定更新区域,将所述目标接口数据作为目标实参,并在所述更新区域中对所述目标形参进行替换。
在一个实施例中,所述目标代码生成模块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.根据权利要求2所述的基于接口数据的代码生成方法,其特征在于,所述对所述源代码进行逐行解析,以提取所述源代码中的关键字的步骤,包括:
对所述源代码进行逐行拆分,将所述源代码拆分为多个行片段;
遍历各所述行片段,从各所述行片段中提取所述源代码中的关键字。
6.根据权利要求1所述的基于接口数据的代码生成方法,其特征在于,所述获取所述目标形参对应的目标接口数据的步骤,包括:
确定与所述目标形参关联的接口描述信息;
从预设的目标接口控制文件中获取所述接口描述信息对应的接口源数据;
根据所述源代码的代码类型,对所述接口源数据进行清洗处理,得到所述目标形参对应的目标接口数据。
7.根据权利要求6所述的基于接口数据的代码生成方法,其特征在于,所述获取所述目标形参对应的目标接口数据之前,还包括:
获取一个或多个模板接口控制文件;各所述模板接口控制文件中包含一个或多个接口的接口源数据;
在获取多个模板接口控制文件的情况下,对各所述模板接口控制文件进行合并去重处理,得到目标接口控制文件。
8.一种基于接口数据的代码生成装置,其特征在于,包括:
源代码获取模块,用于获取待处理的源代码;
源代码解析模块,用于对所述源代码进行逐行解析,从所述源代码中提取目标形参;
目标代码生成模块,用于获取所述目标形参对应的目标接口数据,并将所述目标接口数据作为目标实参对所述目标形参进行替换,生成所述源代码对应的目标代码。
9.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的基于接口数据的代码生成方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的基于接口数据的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211381267.0A CN115437641A (zh) | 2022-11-07 | 2022-11-07 | 基于接口数据的代码生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211381267.0A CN115437641A (zh) | 2022-11-07 | 2022-11-07 | 基于接口数据的代码生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437641A true CN115437641A (zh) | 2022-12-06 |
Family
ID=84252104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211381267.0A Pending CN115437641A (zh) | 2022-11-07 | 2022-11-07 | 基于接口数据的代码生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437641A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117492823A (zh) * | 2023-12-29 | 2024-02-02 | 珠海格力电器股份有限公司 | 代码获取方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968307A (zh) * | 2018-09-29 | 2020-04-07 | 北京数聚鑫云信息技术有限公司 | 一种基于智能生成基础代码的微服务构建方法及装置 |
CN112130837A (zh) * | 2020-09-25 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种代码处理方法、装置及存储介质 |
CN115167891A (zh) * | 2022-07-07 | 2022-10-11 | 北京蓝天航空科技股份有限公司 | 接口控制文件的数据更新方法、装置、设备及存储介质 |
CN115268918A (zh) * | 2022-08-05 | 2022-11-01 | 成都工元科技有限公司 | 一种基于规则模板的c++代码向c代码的自动转化方法 |
-
2022
- 2022-11-07 CN CN202211381267.0A patent/CN115437641A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968307A (zh) * | 2018-09-29 | 2020-04-07 | 北京数聚鑫云信息技术有限公司 | 一种基于智能生成基础代码的微服务构建方法及装置 |
CN112130837A (zh) * | 2020-09-25 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种代码处理方法、装置及存储介质 |
CN115167891A (zh) * | 2022-07-07 | 2022-10-11 | 北京蓝天航空科技股份有限公司 | 接口控制文件的数据更新方法、装置、设备及存储介质 |
CN115268918A (zh) * | 2022-08-05 | 2022-11-01 | 成都工元科技有限公司 | 一种基于规则模板的c++代码向c代码的自动转化方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117492823A (zh) * | 2023-12-29 | 2024-02-02 | 珠海格力电器股份有限公司 | 代码获取方法、装置、电子设备及可读存储介质 |
CN117492823B (zh) * | 2023-12-29 | 2024-04-05 | 珠海格力电器股份有限公司 | 代码获取方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111160045B (zh) | 一种游戏资源文件翻译方法、装置及设备 | |
US11593342B2 (en) | Systems and methods for database orientation transformation | |
CN107329765B (zh) | 程序文件处理方法及装置 | |
CN110580189A (zh) | 生成前端页面的方法、装置、计算机设备以及存储介质 | |
US12032941B2 (en) | Method and system for updating legacy software | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
CN105095304A (zh) | 日志模板生成方法及设备 | |
CN111666372A (zh) | 解析查询词query的方法、装置、电子设备和可读存储介质 | |
CN115437641A (zh) | 基于接口数据的代码生成方法、装置、设备及存储介质 | |
CN111208995A (zh) | Ibm主机作业的自动生成方法、系统、装置及存储介质 | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
CN114489950A (zh) | 一种组件适配方法、装置、电子设备及存储介质 | |
JP7131119B2 (ja) | ソースアプリケーションからのソースデータをターゲットアプリケーションのターゲットデータへとマージするためのシステムおよび方法 | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
CN115469849B (zh) | 一种业务处理系统、方法、电子设备和存储介质 | |
CN110674628A (zh) | 文件模板生成方法及系统 | |
CN114185958B (zh) | 血缘关系生成方法、装置、计算机设备和存储介质 | |
CN115438524A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN105354144A (zh) | 业务支撑系统信息模型一致性自动化测试方法与系统 | |
CN113127408A (zh) | 数据转换方法及装置 | |
CN111027196A (zh) | 一种电力设备的仿真分析任务处理方法、装置及存储介质 | |
CN116679913A (zh) | 一种工作流增量生成方法、装置及计算设备集群 | |
CN114646332A (zh) | 惯导系统测试数据预处理方法、装置、设备及存储介质 | |
CN115525295A (zh) | 一种代码自动编辑方法、装置、电子设备及存储介质 | |
CN117371416A (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 |
Application publication date: 20221206 |
|
RJ01 | Rejection of invention patent application after publication |