代码编译方法技术

技术编号:39597986 阅读:11 留言:0更新日期:2023-12-03 19:57
本申请提供了一种代码编译方法

【技术实现步骤摘要】
代码编译方法、装置、电子设备及存储介质


[0001]本申请涉及代码编译
,特别涉及一种代码编译方法

装置

电子设备及存储介质


技术介绍

[0002]随着电子设备操作系统
(
比如,车载
linux)
的不断发展,功能安全技术已经是电子设备操作系统领域内不可或缺的一部分,编译器作为将源代码转化为执行程序的重要工具,编译器的功能安全,直接影响到后续执行程序的功能安全

其中,影响后续执行程序的功能安全的主要因素一般来自两个方面:第一种是由于编译器自身的
bug
造成,比如编辑器内置了错误编译语言的语法,将加法翻译成了减法

第二种是根据产品的设计要求,要求在某些特殊场景下,使用某种特殊语法或者语法组合,会带来功能安全问题

[0003]针对上述的编译器由于语法或者语法组合引起的功能安全问题,现有技术中,大多通过代码评审或者静态检查的方式找出这些语法的方式解决问题

但是代码评审的方式大部分是人工进行的,存在成本高,遗漏率高的问题

静态检查的方式存在运行速度慢,误报率高的问题


技术实现思路

[0004]本申请提供了一种代码编译方法,在对目标代码进行编译的过程中,能够自动实现针对目标代码的功能安全检查,使得代码编译过程速度快

成本低,大大减小了误报率和遗漏率

[0005]为解决上述技术问题,第一方面,本申请的实施方式提供了一种代码编译方法,应用于电子设备,该方法包括:确定目标代码,以及目标代码对应的第一信息,第一信息为用于标识目标代码的处理方式的信息;在根据第一信息确定目标代码的处理方式为编译处理方式的情况下,解析预设的代码编译配置文件,得到用于代码功能安全检查的第二信息以及用于编译目标代码的编译器;根据编译器对目标代码进行编译处理,并且根据第二信息,对目标代码进行代码功能安全检查处理,直至针对目标代码的编译处理结束

[0006]本申请实现方式中,根据目标代码对应的第一信息,在确定目标代码的处理方式为编译处理方式的情况下,利用编译器对目标代码进行编译处理,并且根据解析预设的代码编译配置文件得到的第二信息,对目标代码进行代码功能安全检查处理

由此,在编译过程中便能对目标代码进行功能安全检查,不需要添加外部的代码检查工具,在编译过程中自动实现了针对目标代码的代码功能安全检查,速度快

成本低

进一步地,也不需要人工进行安全检查或者进行静态检查,大大减小了误报率和遗漏率

[0007]在上述第一方面的一种可能的实现中,根据编译器对目标代码进行编译处理,包括:根据编译器对目标代码进行预编译处理,得到预编译代码;对目标代码进行代码功能安全检查处理,包括:对预编译代码进行代码功能安全检查处理,以实现对目标代码的代码功能安全检查处理

[0008]本申请实现方式中,对目标代码进行预编译,能够对目标代码中的伪指令

注释等信息进行处理,替换宏并加入头文件,得到预编译代码

对预编译代码进行代码功能安全检查处理,以实现对目标代码进行代码功能安全检查处理,使得安全检查结果更加准确

[0009]在上述第一方面的一种可能的实现中,第二信息包括代码功能安全检查对应的流程配置信息,该方法还包括:在代码功能安全检查出现失败的情况下,根据流程配置信息,判断是否停止对目标代码的编译处理;若是,则停止对目标代码进行编译处理;若否,则继续对目标代码进行编译处理,直至完成对目标代码的编译处理

[0010]本申请实现方式中,根据流程配置信息,判断是否停止对目标代码的编译处理,增加了目标代码安全检查处理过程的灵活性

[0011]在上述第一方面的一种可能的实现中,在代码功能安全检查出现失败的情况下,该方法还包括:对目标代码中的错误代码进行筛选处理

[0012]本申请实现方式中,对目标代码中的错误代码进行筛选处理,便于工程师对筛选出的错误代码进行分析,以优化目标代码

[0013]在上述第一方面的一种可能的实现中,该方法还包括:在代码功能安全检查成功的情况下,对预编译代码进行编译

汇编和链接处理

[0014]在上述第一方面的一种可能的实现中,第二信息包括预设的错误语法表达式,对目标代码进行代码功能安全检查,包括:对目标代码进行词法分析,得到单词序列;对单词序列进行语法分析和语义分析,得到抽象语法树;根据抽象语法树,得到目标代码的语法表达式;将目标代码的语法表达式与错误语法表达式进行匹配,根据匹配结果判断代码功能安全检查是否成功

[0015]本申请实现方式中,通过将目标代码的语法表达式与错误语法表达式进行匹配,根据匹配结果判断代码功能安全检查是否成功,增加了目标代码的功能安全检查的效率和准确性

[0016]在上述第一方面的一种可能的实现中,该方法还包括:在根据编译器对目标代码进行编译处理的过程中,若出现编译错误,则对目标代码中的错误代码进行筛选处理

[0017]本申请实现方式中,在目标代码出现编译错误的时候,对目标代码中的错误代码进行筛选处理,便于工程师对筛选出的错误代码进行分析,以优化目标代码

[0018]第二方面,本申请的实施方式提供了一种代码编译装置,该装置包括:第一处理模块,用于确定目标代码,以及目标代码对应的第一信息,第一信息为用于标识目标代码的处理方式的信息;第二处理模块,用于在根据第一信息确定目标代码的处理方式为编译处理方式的情况下,解析预设的代码编译配置文件,得到用于代码功能安全检查的第二信息以及用于编译目标代码的编译器;第三处理模块,用于根据编译器对目标代码进行编译处理,并且根据第二信息,对目标代码进行代码功能安全检查处理,直至针对目标代码的编译处理结束

[0019]第三方面,本申请的实施方式提供了一种电子设备,包括:存储器,用于存储计算机程序,计算机程序包括程序指令;处理器,用于执行程序指令,以使电子设备执行上述第一方面和
/
或第一方面的任意一种可能的实现方式所提供的代码编译方法

[0020]第四方面,本申请的实施方式提供了一种计算机可读取存储介质,计算机可读取存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被电子设备运行以使执
行上述第一方面和
/
或第一方面的任意一种可能的实现方式所提供的代码编译方法

[0021]第五方面,本申请的实施方式提供了一种计算机程序产品,包括计算机程序
/
指令,计算机程序
/
指令被处理器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种代码编译方法,其特征在于,应用于电子设备,所述方法包括:确定目标代码,以及所述目标代码对应的第一信息,所述第一信息为用于标识所述目标代码的处理方式的信息;在根据所述第一信息确定所述目标代码的处理方式为编译处理方式的情况下,解析预设的代码编译配置文件,得到用于代码功能安全检查的第二信息以及用于编译所述目标代码的编译器;根据所述编译器对所述目标代码进行编译处理,并且根据所述第二信息,对所述目标代码进行代码功能安全检查处理,直至针对所述目标代码的编译处理结束
。2.
如权利要求1所述的代码编译方法,其特征在于,根据所述编译器对所述目标代码进行编译处理,包括:根据所述编译器对所述目标代码进行预编译处理,得到预编译代码;对所述目标代码进行代码功能安全检查处理,包括:对所述预编译代码进行代码功能安全检查处理,以实现对所述目标代码的代码功能安全检查处理
。3.
如权利要求2所述的代码编译方法,其特征在于,所述第二信息包括代码功能安全检查对应的流程配置信息,所述方法还包括:在所述代码功能安全检查出现失败的情况下,根据所述流程配置信息,判断是否停止对所述目标代码的编译处理;若是,则停止对所述目标代码进行编译处理;若否,则继续对所述目标代码进行编译处理,直至完成针对所述目标代码的编译处理
。4.
如权利要求3所述的代码编译方法,其特征在于,在所述代码功能安全检查出现失败的情况下,所述方法还包括:对所述目标代码中的错误代码进行筛选处理
。5.
如权利要求4所述的代码编译方法,其特征在于,所述方法还包括:在所述代码功能安全检查成功的情况下,对所述预编译代码进行编译

汇编和链接处理
。6.
如权利要求1‑5任意一项...

【专利技术属性】
技术研发人员:林乐昆王圭王金宝匡汝凡沈文婷
申请(专利权)人:零束科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1