CN112631599B - 编译方法、装置和存储介质 - Google Patents

编译方法、装置和存储介质 Download PDF

Info

Publication number
CN112631599B
CN112631599B CN202011449166.3A CN202011449166A CN112631599B CN 112631599 B CN112631599 B CN 112631599B CN 202011449166 A CN202011449166 A CN 202011449166A CN 112631599 B CN112631599 B CN 112631599B
Authority
CN
China
Prior art keywords
compiling
error reporting
reporting information
current
error
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.)
Active
Application number
CN202011449166.3A
Other languages
English (en)
Other versions
CN112631599A (zh
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.)
Weichai Power Co Ltd
Original Assignee
Weichai Power 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 Weichai Power Co Ltd filed Critical Weichai Power Co Ltd
Priority to CN202011449166.3A priority Critical patent/CN112631599B/zh
Publication of CN112631599A publication Critical patent/CN112631599A/zh
Application granted granted Critical
Publication of CN112631599B publication Critical patent/CN112631599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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

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为本申请实施例提供的一种编译方法的流程图;
图4为本申请实施例提供的另一种编译方法的流程图;
图5为本申请实施例提供的另一种编译方法的流程图;
图6为本申请实施例提供的一种编译装置的结构框图;
图7为本申请实施例提供的另一种编译装置的结构框图;
图8为本申请实施例提供的一种电子设备的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面对本申请实施例中涉及的部分名词进行介绍。
编译:编译器将C语言程序代码转化为可执行程序,通常要经过编译和链接两个主要过程;编译过程主要是将代码生成.o文件,而链接过程是根据链接文件,将前述所有的.o“链接”生成可刷写到控制芯片中的可执行程序。通常所说的编译过程,包含了编译和链接两个过程。
编译环境:使用编译器,例如TASKING、HIGHTEC等,对源代码进行编译的开发环境,可以自主开发,也可以使用支持该编译器的某些集成开发环境(Intergrated DevelopmentEnvironment,IDE)。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
下面对相关技术进行介绍:
目前,集成人员在通过编译器对代码文件进行编译过程中,会遇到各种编译问题,例如变量重复定义、未定义、头文件错误引用等常见的问题,当出现编译问题时,会导致编译进程中断,待相关编译问题解决后才能继续重新编译。这样,在开发人员解决编译问题之前,集成人员无法继续编译排查其他问题,因此,编译效率低。
有鉴于此,本申请实施例提供了一种编译方法、装置和存储介质,可以在出现编译问题时,自动解决编译问题,并在解决编译问题后继续编译以排查其他编译问题,提高编译效率。
下面对本申请实施例提供的一种编译系统进行详细介绍。
图1示出了本申请实施例提供的一种编译系统。该编译系统可以应用于软件开发过程,例如可以是嵌入式软件开发过程。
参照图1所示,该编译系统包括编译设备10和服务器20;其中,编译设备10可以是安装有编译环境的终端设备,通过编译环境中的编译器可以对目标代码文件进行编译。
编译设备10,用于在对目标代码文件进行编译过程中,若出现编译报错,则将包含当前编译报错信息的匹配请求上传至服务器20。
具体地,目标代码文件可以是包含C语言源代码的文件,通常在对C语言源代码文件进行编译过程中,会遇到各种各样的编译问题,例如变量重复定义、变量未定义、头文件错误引用等等,当遇到编译问题时会报错,即获得编译报错信息。
服务器20,用于根据编译设备10发送的匹配请求,从预先存储的编译报错信息与解决方案的对应关系中,匹配当前编译报错信息对应的目标解决方案;若匹配到目标解决方案,则将该目标解决方案发送给编译设备10。
该实施例中,服务器20可以预先存储编译报错信息和解决方案的对应关系,其中编译报错信息可以是从编译设备10中获取的,对应的解决方案可以是根据集成人员或者开发人员的经验积累得到,由相关人员录入服务器20的,例如解决方案可以是针对编译报错信息对相应的代码进行修改的内容。具体地,服务器20可以将上述对应关系以表格的形式存储在数据库中,当然也可以以其他形式存储在数据库中,本申请实施例对此不作限定。
编译设备10,还用于根据服务器20发送的目标解决方案对目标代码文件中的相应代码进行修改,并对修改后的目标代码文件进行重新编译。
在具体实施中,编译设备10可以通过自动修改脚本对目标代码文件中的相应代码进行修改,同时可以记录修改内容,并在修改完成后继续编译。
因此,本申请实施例可以在出现编译问题时,自动解决编译问题,并在解决编译问题后继续编译以排查其他编译问题,提高编译效率。
在一种可选的实施例中,编译设备10还可以当对修改后的目标代码文件进行重新编译后再次出现编译报错时,获取再次编译报错信息;根据再次编译报错信息,判断再次出现的编译报错是否由上一次修改的相应代码导致;如果是,则停止编译,并将再次编译报错信息发送给服务器20。
在该实施例中,判断再次出现的编译报错是否由上一次修改的相应代码导致时,具体可以根据再次编译报错信息中涉及的代码,以及上一次修改的相应代码是否匹配,来确定是否由上一次修改的代码导致再次编译报错。示例性的,如果上一次修改是针对某一代码行进行修改,例如增加变量定义,再次编译报错信息中如果有信息指向到该行,则可以认为再次出现的编译报错由上一次修改的代码导致。
针对不同的编译器,编译报错信息的格式也不同,编译设备10可以识别相应的编译器的编译报错信息的格式,以Tasking编译器为例,当某个代码文件编译报错时,报错信息通常会有标准的固定格式的前缀,比如:ctc E505:["myCode.c"75/9]syntax error-tokens";"inserted before"{",其中ctc代表c代码编译阶段,E代表Error(除此以外,还有W-Warning,I-Information),后面中括号中表明哪个文件的哪一行报的错,等等。
上述判断方法只是示例性的,并不作为对本申请实施例的限定,还可以通过其他方法进行判断。
服务器20在接收到编译设备10发送的再次编译报错信息时,可以确定预先存储的编译报错信息中是否包括该再次编译报错信息,如果不包括,则对再次编译报错信息进行存储。
进一步地,如果再次出现的编译报错不是由上一次修改的相应代码导致,则可以将再次出现的编译报错作为上述当前编译报错信息,返回上述将包含当前编译报错信息的匹配请求上传至服务器20的步骤,继续由服务器20获取匹配的目标解决方案。
在一种可选的实施例中,服务器20如果没有匹配到上述当前编译报错信息对应的目标解决方案,则可以将当前编译报错信息进行存储;在后续获取到用户录入的该当前编译报错信息的解决方案时,将用户录入的解决方案与该当前编译报错信息对应存储,以完成对预先存储的编译报错信息与解决方案的对应关系进行更新。
进一步地,编译设备10如果未接收到服务器20发送的当前编译报错信息对应的目标解决方案,则停止编译。
在一种可选的实施例中,编译设备10还可以在出现编译报错时,判断是否首次出现编译报错,如果是,则对当前编译环境执行备份。这是由于,编译设备10后续会对目标代码文件进行自动修改,而修改后的内容可能还需要开发人员进行确认,因此将未修改的目标代码文件以及相关配置文件等组成的当前编译环境进行备份,以便开发人员在对目标代码文件进行修改确认后,集成人员可以基于备份的当前编译环境,对修改确认后的目标代码文件继续开展集成工作。
下面结合实际应用场景,对本申请实施例提供的编译系统的编译过程进行详细介绍。
如图2所示,编译设备的编译环境中包括编译模块11,例如编译器,该编译模块可以包括两个子模块:编译问题上报子模块111以及智能编译子模块112。其中,编译问题上报子模块111用于将编译过程中遇到的编译问题自动上传至服务器,智能编译子模块112用于自动处理编译过程中遇到的编译问题并继续编译。
具体地,编译模块11还可以设置使能开关,当使能开关打开时,开启编译问题上报子模块111以及智能编译子模块112的功能。当使能开关关闭时,为正常的集成编译模式,如果遇到编译问题,则编译过程自动中断,直到相关问题得到解决。
服务器20可以预先搭建常见编译问题数据库,该数据库用于存储上述编译问题及其对应的解决方案;当编译设备在智能编译阶段遇到编译问题时,可以自该数据库中匹配解决方案。
下面以图3为例,对编译系统的编译过程进行说明。
如图3所示,在编译过程中,执行如下步骤:
步骤1、判断是否出现编译报错,如果是,则执行步骤2;如果否,则执行步骤12。
步骤2、判断是否智能编译使能,即上述使能开关打开,如果是,则执行步骤3;如果否,则停止。
步骤3、判断是否首次编译报错,如果是,则执行步骤10以及步骤11;如果否,则执行步骤4。
步骤4、查询服务器的数据库,匹配解决方案。
步骤5、判断是否匹配成功,如果是,则执行步骤6;如果否,则执行步骤12。
步骤6、通过自动修改脚本对报错文件执行修改,并自动记录修改内容。
步骤7、重新编译。
步骤8、判断是否再次出现编译报错,如果是,则执行步骤9;如果否,则返回步骤1。
步骤9、判断报错是否由上述修改导致,如果是,则执行步骤10;如果否,则返回步骤1。
步骤10、向服务器上报编译报错信息,以使服务器更新数据。
步骤11、备份报错的编译环境。
步骤12、判断编译是否结束,如果是,则停止;如果否,则返回步骤1。
本申请实施例在编译过程中,如果遇到首次编译报错,则对当前编译环境执行备份,以便相关开发人员完成正式修改后,集成人员基于该编译环境,更新改动内容后继续开展集成工作。
并且,在遇到编译报错时,可以自动从服务器的数据库中匹配解决方案,如果匹配成功,则根据匹配到的解决方案对报错的代码文件执行自动修改,并在修改后重新开始编译。如果修改后编译问题无法解决,说明匹配到的解决方案有问题,为避免接下来进入无意义的解决问题死循环,可以终止本次编译过程,接下来进入人工确认问题及数据库维护模式,以便为下一次编译做准备。
本申请实施例还具有以下有益效果:
1.将编译问题收集过程与编译过程相结合,有利于在第一时间收集到相关编译问题;
2.建立常见编译问题接解决方案数据库,有助于经验的积累和知识的传承。
3.自动智能编译功能,有助于通过一次编译,自动排查所有相关编译问题;且对于自动智能编译的结果,如果开发人员评估智能修改可以接受且不影响目标功能测试,将大大提高开发人员的开发及测试效率。同时,智能修改结果能够为开发人员实际修改工作提供参考。
4.随着集成次数不断增多和问题解决过程的不断迭代,常见编译问题及解决方案数据库会越来越丰富,编译过程将会越来越智能,同时智能编译的成功率也会越来越高。
下面基于上述实施例的编译系统,对编译设备侧的编译方法进行说明。
参照图4所示,本申请实施例提供的一种编译方法,可以由编译设备执行,具体包括如下步骤:
步骤S401,在对目标代码文件进行编译过程中,若出现编译报错,则将包含当前编译报错信息的匹配请求上传至服务器,以使服务器从预先存储的编译报错信息与解决方案的对应关系中,匹配当前编译报错信息对应的目标解决方案;
步骤S402,若接收到服务器发送的当前编译报错信息对应的目标解决方案,则根据目标解决方案对目标代码文件中的相应代码进行修改,并对修改后的目标代码文件进行重新编译。
在一种可选的实施例中,编译方法还可以包括如下步骤:
a、若对修改后的目标代码文件进行重新编译后再次出现编译报错,则获取再次编译报错信息;
b、根据再次编译报错信息,判断再次出现的编译报错是否由上一次修改的相应代码导致;如果是,则执行步骤c;如果否,则执行步骤d;
c、停止编译,并将再次编译报错信息发送给服务器,以使服务器对再次编译报错信息进行存储。
d、返回步骤S401中将包含当前编译报错信息的匹配请求上传至服务器的步骤。
在一种可选的实施例中,编译方法还可以包括如下步骤:
若未接收到服务器发送的当前编译报错信息对应的目标解决方案,则停止编译。
在一种可选的实施例中,若出现编译报错后,编译方法还可以包括如下步骤:
判断是否首次出现编译报错,如果是,则对当前编译环境执行备份。
下面基于上述实施例的编译系统,对服务器侧的编译方法进行说明。
参照图5所示,本申请实施例提供一种编译方法,由服务器执行,具体可以包括如下步骤:
步骤S501,若接收到编译设备发送的包含当前编译报错信息的匹配请求,则从预先存储的编译报错信息与解决方案的对应关系中,匹配当前编译报错信息对应的目标解决方案;
步骤S502,若匹配到当前编译报错信息对应的目标解决方案,则将目标解决方案发送给编译设备,以使编译设备根据目标解决方案对目标代码文件中的相应代码进行修改,并对修改后的目标代码文件进行重新编译。
在一种可选的实施例中,编译方法还可以包括如下步骤:
1)若未匹配到当前编译报错信息对应的目标解决方案,则将当前编译报错信息进行存储;
2)当获取到用户录入的当前编译报错信息的解决方案时,将用户录入的解决方案与当前编译报错信息对应存储。
基于相同的发明构思,本申请实施例提供一种编译装置,应用于编译设备,参照图6所示,该编译装置包括:
上传模块61,用于在对目标代码文件进行编译过程中,若出现编译报错,则将包含当前编译报错信息的匹配请求上传至服务器,以使服务器从预先存储的编译报错信息与解决方案的对应关系中,匹配当前编译报错信息对应的目标解决方案;
自动修改模块62,用于若接收到服务器发送的当前编译报错信息对应的目标解决方案,则根据目标解决方案对目标代码文件中的相应代码进行修改,并对修改后的目标代码文件进行重新编译。
在一种可选的实施例中,该装置还可以包括:
获取模块,用于若对修改后的目标代码文件进行重新编译后再次出现编译报错,则获取再次编译报错信息;
第一判断模块,用于根据再次编译报错信息,判断再次出现的编译报错是否由上一次修改的相应代码导致;
发送模块,用于如果是,则停止编译,并将再次编译报错信息发送给服务器,以使服务器对再次编译报错信息进行存储。
在一种可选的实施例中,发送模块还可以用于:
如果再次出现的编译报错不是由上一次修改的相应代码导致,则返回将包含当前编译报错信息的匹配请求上传至服务器的步骤。
在一种可选的实施例中,该装置还可以包括:
停止模块,用于若未接收到服务器发送的当前编译报错信息对应的目标解决方案,则停止编译。
在一种可选的实施例中,该装置还可以包括:
第二判断模块,用于若出现编译报错,则判断是否首次出现编译报错,如果是,则对当前编译环境执行备份。
基于相同的发明构思,本申请实施例提供一种编译装置,应用于服务器,参照图7所示,该编译装置包括:
匹配模块71,用于若接收到编译设备发送的包含当前编译报错信息的匹配请求,则从预先存储的编译报错信息与解决方案的对应关系中,匹配当前编译报错信息对应的目标解决方案;
发送模块72,用于若匹配到当前编译报错信息对应的目标解决方案,则将目标解决方案发送给编译设备,以使编译设备根据目标解决方案对目标代码文件中的相应代码进行修改,并对修改后的目标代码文件进行重新编译。
在一种可选的实施例中,装置还可以包括存储模块,用于:
若未匹配到当前编译报错信息对应的目标解决方案,则将当前编译报错信息进行存储;
当获取到用户录入的当前编译报错信息的解决方案时,将用户录入的解决方案与当前编译报错信息对应存储。
在介绍了本申请示例性实施方式的业务控制方法之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
参阅图8所示,其为本申请实施例中的一种电子设备的组成结构示意图。在一种实施例中,该电子设备可以是安装有编译软件的终端设备,可以用于编译。在另一种实施例中,该电子设备也可以是服务器。电子设备的结构可以如图8所示,包括存储器801,通讯模块803以及一个或多个处理器802。
存储器801,用于存储处理器802执行的计算机程序。存储器801可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器801可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器801也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器801是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器801可以是上述存储器的组合。
处理器802,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器802,用于调用存储器801中存储的计算机程序时实现上述编译方法。
通讯模块803用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器801、通讯模块803和处理器802之间的具体连接介质。本公开实施例在图8中以存储器801和处理器802之间通过总线804连接,总线804在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器801中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的编译方法。处理器802用于执行上述的编译方法。
本申请的实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请任一实施例所记载的编译方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在一些可选的实施方式中,本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任意一种编译方法的步骤。例如,计算机设备可以执行如图4或图5中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (7)

1.一种编译方法,其特征在于,包括:
在嵌入式软件开发过程中,对目标代码文件进行编译过程中,若出现编译报错,则判断是否智能编译使能,如果是,则判断是否首次编译报错;
如果是首次编译报错,则对包含所述目标代码文件以及相关配置文件的当前编译环境执行备份,并将包含当前编译报错信息的匹配请求上传至服务器,以使所述服务器从预先存储的编译报错信息与解决方案的对应关系中,匹配所述当前编译报错信息对应的目标解决方案;
若接收到所述服务器发送的所述当前编译报错信息对应的目标解决方案,则在当前编译环境中,根据所述目标解决方案,通过自动修改脚本对所述目标代码文件中的相应代码进行修改,并记录修改内容,对修改后的目标代码文件进行重新编译;
若对修改后的目标代码文件进行重新编译后再次出现编译报错,则获取再次编译报错信息;
根据所述再次编译报错信息中涉及的代码,以及上一次修改的相应代码是否匹配,判断再次出现的编译报错是否由上一次修改的相应代码导致;
如果是,则停止编译,并将所述再次编译报错信息发送给服务器,以使所述服务器对所述再次编译报错信息进行存储;
如果再次出现的编译报错不是由上一次修改的相应代码导致,则将再次出现的编译报错作为新的当前编译报错信息,返回将包含当前编译报错信息的匹配请求上传至服务器的步骤;
当开发人员对修改后的目标代码文件进行修改确认后,在备份的当前编译环境中,对修改确认后的目标代码文件进行集成。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若未接收到所述服务器发送的所述当前编译报错信息对应的目标解决方案,则停止编译。
3.一种编译方法,其特征在于,应用于服务器,包括:
在嵌入式软件开发过程中,若接收到编译设备发送的包含当前编译报错信息的匹配请求,则从预先存储的编译报错信息与解决方案的对应关系中,匹配所述当前编译报错信息对应的目标解决方案;
若匹配到所述当前编译报错信息对应的目标解决方案,则将所述目标解决方案发送给所述编译设备,以使所述编译设备在当前编译环境中,根据所述目标解决方案,通过自动修改脚本对目标代码文件中的相应代码进行修改,并记录修改内容,对修改后的目标代码文件进行重新编译;
若接收到所述编译设备发送的再次编译报错信息,则确定预先存储的编译报错信息中是否包括所述再次编译报错信息,如果不包括,则对所述再次编译报错信息进行存储;其中,所述再次编译报错信息是由所述编译设备上一次修改的相应代码导致的;
所述编译设备在出现编译报错时,判断是否首次出现编译报错,如果是,则对当前编译环境执行备份;当开发人员对修改后的目标代码文件进行修改确认后,所述编译设备在备份的当前编译环境中,对修改确认后的目标代码文件进行集成。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若未匹配到所述当前编译报错信息对应的目标解决方案,则将所述当前编译报错信息进行存储;
当获取到用户录入的所述当前编译报错信息的解决方案时,将用户录入的解决方案与所述当前编译报错信息对应存储。
5.一种编译装置,其特征在于,包括:
上传模块,用于在嵌入式软件开发过程中,对目标代码文件进行编译过程中,若出现编译报错,则判断是否智能编译使能,如果是,则判断是否首次编译报错;如果是首次编译报错,则对包含所述目标代码文件以及相关配置文件的当前编译环境执行备份,并将包含当前编译报错信息的匹配请求上传至服务器,以使所述服务器从预先存储的编译报错信息与解决方案的对应关系中,匹配所述当前编译报错信息对应的目标解决方案;
自动修改模块,用于若接收到所述服务器发送的所述当前编译报错信息对应的目标解决方案,则在备份的当前编译环境中,根据所述目标解决方案,通过自动修改脚本对所述目标代码文件中的相应代码进行修改,并记录修改内容,对修改后的目标代码文件进行重新编译;
获取模块,用于若对修改后的目标代码文件进行重新编译后再次出现编译报错,则获取再次编译报错信息;
第一判断模块,用于根据再次编译报错信息,判断再次出现的编译报错是否由上一次修改的相应代码导致;
发送模块,用于如果是,则停止编译,并将再次编译报错信息发送给服务器,以使服务器对再次编译报错信息进行存储,如果再次出现的编译报错不是由上一次修改的相应代码导致,则将再次出现的编译报错作为新的当前编译报错信息,返回将包含当前编译报错信息的匹配请求上传至服务器的步骤;
其中,在开发人员对修改后的目标代码文件进行修改确认后,在备份的当前编译环境中,对修改确认后的目标代码文件进行集成。
6.一种编译装置,其特征在于,应用于服务器,包括:
匹配模块,用于若接收到编译设备发送的包含当前编译报错信息的匹配请求,则从预先存储的编译报错信息与解决方案的对应关系中,匹配所述当前编译报错信息对应的目标解决方案;
发送模块,用于若匹配到所述当前编译报错信息对应的目标解决方案,则将所述目标解决方案发送给所述编译设备,以使所述编译设备在当前编译环境中,根据所述目标解决方案,通过自动修改脚本对目标代码文件中的相应代码进行修改,并记录修改内容,对修改后的目标代码文件进行重新编译;
存储模块,用于若接收到所述编译设备发送的再次编译报错信息,则确定预先存储的编译报错信息中是否包括所述再次编译报错信息,如果不包括,则对所述再次编译报错信息进行存储;其中,所述再次编译报错信息是由所述编译设备上一次修改的相应代码导致的;
其中,所述编译设备在出现编译报错时,判断是否首次出现编译报错,如果是,则对当前编译环境执行备份;当开发人员对修改后的目标代码文件进行修改确认后,所述编译设备在备份的当前编译环境中,对修改确认后的目标代码文件进行集成。
7.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1-2任一或权利要求3-4任一所述方法的步骤。
CN202011449166.3A 2020-12-09 2020-12-09 编译方法、装置和存储介质 Active CN112631599B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011449166.3A CN112631599B (zh) 2020-12-09 2020-12-09 编译方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011449166.3A CN112631599B (zh) 2020-12-09 2020-12-09 编译方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN112631599A CN112631599A (zh) 2021-04-09
CN112631599B true CN112631599B (zh) 2024-03-19

Family

ID=75310181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011449166.3A Active CN112631599B (zh) 2020-12-09 2020-12-09 编译方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN112631599B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721915B (zh) * 2021-07-28 2023-07-14 苏州浪潮智能科技有限公司 一种代码编译方法、装置、设备及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185500A (ja) * 1995-12-28 1997-07-15 Nec Corp ソースプログラムの自動修正装置および自動修正方法
US5905892A (en) * 1996-04-01 1999-05-18 Sun Microsystems, Inc. Error correcting compiler
WO2001009794A2 (en) * 1999-07-30 2001-02-08 Accenture Llp A system, method and article of manufacture for an e-commerce based architecture
CN102831003A (zh) * 2011-06-14 2012-12-19 上海三旗通信科技股份有限公司 Mtk编译环境辅助工具集系统
CN107678748A (zh) * 2017-09-21 2018-02-09 杭州迪普科技股份有限公司 一种源代码文件编译方法及装置
CN107943486A (zh) * 2017-12-19 2018-04-20 北京星河星云信息技术有限公司 一种多语言代码编译方法、分发方法、装置和系统
CN110851135A (zh) * 2019-09-12 2020-02-28 中国平安财产保险股份有限公司 应用程序自动构建上传方法、装置及计算机设备、存储介质
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274770B2 (en) * 2009-06-22 2016-03-01 Oracle America, Inc. Fault tolerant compilation with automatic error correction
US10649836B2 (en) * 2018-05-14 2020-05-12 Dell Products L.L.P. Detecting an error message and automatically presenting links to relevant solution pages

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185500A (ja) * 1995-12-28 1997-07-15 Nec Corp ソースプログラムの自動修正装置および自動修正方法
US5905892A (en) * 1996-04-01 1999-05-18 Sun Microsystems, Inc. Error correcting compiler
WO2001009794A2 (en) * 1999-07-30 2001-02-08 Accenture Llp A system, method and article of manufacture for an e-commerce based architecture
CN102831003A (zh) * 2011-06-14 2012-12-19 上海三旗通信科技股份有限公司 Mtk编译环境辅助工具集系统
CN107678748A (zh) * 2017-09-21 2018-02-09 杭州迪普科技股份有限公司 一种源代码文件编译方法及装置
CN107943486A (zh) * 2017-12-19 2018-04-20 北京星河星云信息技术有限公司 一种多语言代码编译方法、分发方法、装置和系统
CN110851135A (zh) * 2019-09-12 2020-02-28 中国平安财产保险股份有限公司 应用程序自动构建上传方法、装置及计算机设备、存储介质
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
图形化通用化现地嵌入式计算机通讯软件研发及应用;邓小刚等;《水电站机电技术》;20141215;第37卷(第6期);第49-52页 *
电子实验报告自动批改系统的设计与实现;王绍卿;《山东理工大学学报(自然科学版)》;第24卷(第3期);第60-63页 *

Also Published As

Publication number Publication date
CN112631599A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
US11281570B2 (en) Software testing method, system, apparatus, device medium, and computer program product
CN110990020A (zh) 一种软件编译方法、装置及电子设备和存储介质
US20150269060A1 (en) Development tools for logging and analyzing software bugs
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
US10579513B2 (en) Test run control method and apparatus
CN111090433A (zh) 一种数据处理的方法、装置和存储介质
CN109032631A (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
US11422917B2 (en) Deriving software application dependency trees for white-box testing
CN111240955A (zh) Http接口自动化测试方法及装置、存储介质、电子设备
US11030074B2 (en) Code update based on detection of change in runtime code during debugging
WO2021249518A1 (zh) 热补丁文件生成、一致性检测方法、装置、设备和介质
CN112631599B (zh) 编译方法、装置和存储介质
CN110851168B (zh) 数据处理方法及其装置、计算机可读存储介质
US10747514B2 (en) Reduced save and restore instructions for call-clobbered registers
CN115658452A (zh) 埋点校验方法、埋点校验装置、可读存储介质、电子设备
CN112905429B (zh) 一种系统仿真的监控方法及装置
CN117149209A (zh) 一种代码增量编译方法、装置、计算机设备及存储介质
CN116610575A (zh) 一种软件测试的方法、装置及电子设备
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
CN115437943A (zh) 接口文档自动化验证方法、装置和服务器
CN117667643A (zh) 测试用例集的演化方法、装置、计算设备集群及存储介质
CN113986263A (zh) 代码自动化测试方法、装置、电子设备、存储介质
CN111694727A (zh) 一种网卡固件升降级测试方法、系统、终端及存储介质
US20180196676A1 (en) Reduced save and restore instructions for call-clobbered registers
KR101737575B1 (ko) 자동 생성된 sql 구문 기반의 데이터 검증 방법 및 장치

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
GR01 Patent grant
GR01 Patent grant