一种代码检测方法、装置、设备及存储介质制造方法及图纸

技术编号:35603246 阅读:15 留言:0更新日期:2022-11-16 15:24
本申请公开了一种代码检测方法、装置、设备及存储介质,涉及计算机技术领域,包括:通过预设筛选方法从待分析代码中确定缺陷代码;利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片;按照预设规则划分所述代码切片,以得到对应的组成部分;对所述组成部分进行形式化抽象,得到目标二进制信息;通过预设代码安全判定标准检测所述目标二进制信息,得到对应的检测结果,基于所述检测结果判断所述待分析代码是否合格。本申请通过缺陷代码生成特征元素,抽取代码结构信息,排除数据量巨大的冗余信息,通过对二进制信息的检测判断代码是否合格,提高了软件检测的可靠性、代码检测速度以及开发效率,降低了软件开发和维护成本。发和维护成本。发和维护成本。

【技术实现步骤摘要】
一种代码检测方法、装置、设备及存储介质


[0001]本专利技术涉及计算机
,特别涉及一种代码检测方法、装置、设备及存储介质。

技术介绍

[0002]随着信息技术的发展,软件在业务能力生成中发挥着越来越重要的作用。为确保软件产品质量可控,软件开发组织按照工程化的方法进行软件产品研制。其中,软件代码缺陷管理工作是软件工程中的重要内容,进行软件代码审查的主要目的是提高软件质量,及早发现软件缺陷,防止因代码缺陷而造成更大的损失。现有技术通过代码覆盖率工具对被测试代码进行覆盖率测试,在被测试代码执行异常时,根据代码覆盖率工具生成的代码覆盖信息,将被测试代码中被执行在异常时间点之前的一段时间内的代码获取为缺陷代码,测试人员不需要人工排查所有可能发生异常的代码,从而达到提高软件测试准确性和效率的效果。虽然现有技术解决了人工排查问题代码日志的工作,减缓了开发人员的部分工作量,但是需要开发人员对程序的ASTs(Abstract Syntax Trees,抽象语法树)树节点或汇编指令节点逐个进行迭代分析,仍存在耗时久、编译出错时无法准确定位问题代码的问题,且ASTs通常保持了源代码的所有信息,其中包含的冗余信息数据量巨大,其使得检测工作量和检测成本急剧增大,而汇编节点与具体的体系架构相关,其普适性也受到一定的限制。

技术实现思路

[0003]有鉴于此,本专利技术的目的在于提供一种代码检测方法、装置、设备和存储介质,能够提高软件检测的可靠性、代码检测速度以及开发效率,降低软件开发和维护成本。其具体方案如下:
[0004]第一方面,本申请公开了一种代码检测方法,包括:
[0005]通过预设筛选方法从待分析代码中确定缺陷代码;
[0006]利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片;
[0007]按照预设规则划分所述代码切片,以得到对应的组成部分;
[0008]对所述组成部分进行形式化抽象,以得到目标二进制信息;
[0009]通过预设代码安全判定标准检测所述目标二进制信息,以得到对应的检测结果,并基于所述检测结果判断所述待分析代码是否合格。
[0010]可选的,所述通过预设筛选方法从待分析代码中确定缺陷代码,包括:
[0011]将所述待分析代码转换为代码属性图;
[0012]对所述代码属性图进行特征选择以及量化操作,以得到目标代码属性图;
[0013]根据预设筛选规则筛选所述目标代码属性图,以得到所述缺陷代码。
[0014]可选的,所述利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片,包括:
[0015]利用预设工具并基于语法分析以及词法分析,提取所述缺陷代码的抽象语法树以及数据流信息;
[0016]基于所述抽象语法树以及所述数据流构建代码切片;
[0017]或,基于SARD以及所述预设工具的代码生成所述代码切片。
[0018]可选的,所述按照预设规则划分所述代码切片,以得到对应的组成部分,包括:
[0019]按照所述代码切片与程序语句之间的执行关系划分所述代码切片,以得到对应的组成部分。
[0020]可选的,所述通过预设代码安全判定标准检测所述目标二进制信息之前,还包括:
[0021]获取具有预设类型代码安全缺陷的源程序,并标记所述源程序中缺陷源代码包含的程序语句;
[0022]将所述源程序编译为二进制程序;
[0023]通过预设应用工具获取所述二进制程序的指令寄存器执行路径,以得到对应的特征元素集合;
[0024]基于所述特征元素集合构建校验样本集合,并基于所述校验样本集合生成用于判断所述目标二进制信息是否存在缺陷的卷积神经网络模型。
[0025]可选的,所述通过预设代码安全判定标准检测所述目标二进制信息,以得到对应的检测结果,包括:
[0026]基于所述卷积神经网络模型建立所述预设代码安全判定标准;所述卷积神经网络模型中包含所述预设代码安全判定标准;
[0027]利用所述卷积神经网络模型对所述目标二进制信息进行检测,以得到第一检测结果;
[0028]若所述第一检测结果为所述目标二进制信息中存在缺陷,则将所述目标二进制信息翻转,并将翻转后所述目标二进制信息输入至所述卷积神经网络模型,以得到第二检测结果。
[0029]可选的,所述基于所述检测结果判断所述待分析代码是否合格,包括:
[0030]若所述第二检测结果为所述目标二进制信息中存在缺陷,则判定所述待分析代码不合格;
[0031]若所述第一检测结果为所述目标二进制信息中不存在缺陷,则判定所述待分析代码合格,并将所述卷积神经网络模型中的所述待分析代码删除。
[0032]第二方面,本申请公开了一种代码检测装置,包括:
[0033]缺陷代码确定模块,用于通过预设筛选方法从待分析代码中确定缺陷代码;
[0034]代码切片构建模块,用于利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片;
[0035]代码切片划分模块,用于按照预设规则划分所述代码切片,以得到对应的组成部分;
[0036]信息获取模块,用于对所述组成部分进行形式化抽象,以得到目标二进制信息;
[0037]代码检测模块,用于通过预设代码安全判定标准检测所述目标二进制信息,以得到对应的检测结果,并基于所述检测结果判断所述待分析代码是否合格。
[0038]第三方面,本申请公开了一种电子设备,包括:
[0039]存储器,用于保存计算机程序;
[0040]处理器,用于执行所述计算机程序,以实现如前述公开的代码检测方法的步骤。
[0041]第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如前述公开的代码检测方法。
[0042]可见,本申请提供了一种代码检测方法,包括:通过预设筛选方法从待分析代码中确定缺陷代码;利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片;按照预设规则划分所述代码切片,以得到对应的组成部分;对所述组成部分进行形式化抽象,以得到目标二进制信息;通过预设代码安全判定标准检测所述目标二进制信息,以得到对应的检测结果,并基于所述检测结果判断所述待分析代码是否合格。由此可见,本申请通过抽取缺陷代码的目标信息,并基于所述目标信息构建代码切片,然后进行形式化抽象,得到目标二进制信息,排除了数据量巨大的冗余信息,通过对二进制信息的检测判断代码是否合格,提高了软件检测的可靠性、代码检测速度以及开发效率,降低了软件开发和维护成本。
附图说明
[0043]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码检测方法,其特征在于,包括:通过预设筛选方法从待分析代码中确定缺陷代码;利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片;按照预设规则划分所述代码切片,以得到对应的组成部分;对所述组成部分进行形式化抽象,以得到目标二进制信息;通过预设代码安全判定标准检测所述目标二进制信息,以得到对应的检测结果,并基于所述检测结果判断所述待分析代码是否合格。2.根据权利要求1所述的代码检测方法,其特征在于,所述通过预设筛选方法从待分析代码中确定缺陷代码,包括:将所述待分析代码转换为代码属性图;对所述代码属性图进行特征选择以及量化操作,以得到目标代码属性图;根据预设筛选规则筛选所述目标代码属性图,以得到所述缺陷代码。3.根据权利要求1所述的代码检测方法,其特征在于,所述利用预设工具提取所述缺陷代码的目标信息,并基于所述目标信息构建代码切片,包括:利用预设工具并基于语法分析以及词法分析,提取所述缺陷代码的抽象语法树以及数据流信息;基于所述抽象语法树以及所述数据流构建代码切片;或,基于SARD以及所述预设工具的代码生成所述代码切片。4.根据权利要求1所述的代码检测方法,其特征在于,所述按照预设规则划分所述代码切片,以得到对应的组成部分,包括:按照所述代码切片与程序语句之间的执行关系划分所述代码切片,以得到对应的组成部分。5.根据权利要求1至4任一项所述的代码检测方法,其特征在于,所述通过预设代码安全判定标准检测所述目标二进制信息之前,还包括:获取具有预设类型代码安全缺陷的源程序,并标记所述源程序中缺陷源代码包含的程序语句;将所述源程序编译为二进制程序;通过预设应用工具获取所述二进制程序的指令寄存器执行路径,以得到对应的特征元素集合;基于所述特征元素集合构建校验样本集合,并基于所述校验样本集合生成用于判断所述目标二进制信息是否存在缺陷的卷积神经...

【专利技术属性】
技术研发人员:肖孟孟张浩
申请(专利权)人:上海安恒智慧城市安全技术有限公司
类型:发明
国别省市:

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

1