函数的返回值类型检测方法及装置制造方法及图纸

技术编号:39141003 阅读:11 留言:0更新日期:2023-10-23 14:54
本申请涉及代码检测技术领域,提供一种函数的返回值类型检测方法及装置。所述方法包括:根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值;根据各所述目标值的数据类型,得到所述目标函数的返回值类型检测结果。本申请实施例提供的函数的返回值类型检测方法能够准确地检测函数的返回值类型是否一致。类型是否一致。类型是否一致。

【技术实现步骤摘要】
函数的返回值类型检测方法及装置


[0001]本申请涉及代码检测
,具体涉及一种函数的返回值类型检测方法及装置。

技术介绍

[0002]软件开发中,函数的返回值类型应该是确定且保持一致的,这有利于保证代码的正确性和稳定性。但是对于弱类型语言,如PHP、JavaScript等是无法验证函数的返回值类型是否一致,而若函数的返回值类型不一致,会导致调用该函数的地方不知道应如何接收函数返回,从而造成很多潜在漏洞。
[0003]为解决上述问题,相关技术中,通过使用神经网络模型来进行代码检测,以检测函数的返回值类型是否一致。但这种方式的检测准确度依赖于神经网络模型的训练效果,神经网络模型的训练效果的训练效果又依赖于训练样本和样本标签的准确度,若训练样本和样本标签的准确度较低,则会导致检测结果不准确。

技术实现思路

[0004]本申请旨在至少解决相关技术中存在的技术问题之一。为此,本申请提出一种函数的返回值类型检测方法,能够准确地检测函数的返回值类型是否一致。
[0005]根据本申请第一方面实施例的函数的返回值类型检测方法,包括:
[0006]根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值;
[0007]根据各所述目标值的数据类型,得到所述目标函数的返回值类型检测结果。
[0008]根据本申请的一个实施例,还包括:
[0009]根据所述目标代码中,所述目标函数的起始位置以及所述目标函数的下一函数的起始位置,确定与所述目标函数对应的代码区域;
[0010]对所述代码区域进行遍历,得到所述目标函数的各return语句。
[0011]根据本申请的一个实施例,根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值,包括:
[0012]确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值。
[0013]根据本申请的一个实施例,确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值,包括:
[0014]确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,检测所述目标函数的各剩余return语句的数据类型;
[0015]在各所述剩余return语句的数据类型一致的情况下,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值;
[0016]其中,各所述剩余return语句为所述目标函数中除各所述目标return语句外的
return语句。
[0017]根据本申请的一个实施例,还包括:
[0018]在所述目标函数的至少两个剩余return语句的数据类型不一致的情况下,确定所述目标函数的返回值类型检测结果异常。
[0019]根据本申请的一个实施例,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值,包括:
[0020]根据所述目标函数的各return语句的数据类型,对所述目标函数的各return语句进行去重,得到各目标return语句;
[0021]根据各所述目标return语句,调用所述目标函数,得到与各所述目标return语句一一对应的各目标值。
[0022]根据本申请的一个实施例,还包括:
[0023]确定所述目标函数的各return语句中,不存在数据类型无法识别的待定return语句,根据所述目标函数的各return语句的数据类型,得到所述目标函数的返回值类型检测结果。
[0024]根据本申请第二方面实施例的函数的返回值类型检测装置,包括:
[0025]函数调用模块,用于根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值;
[0026]类型检测模块,用于根据各所述目标值的数据类型,得到所述目标函数的返回值类型检测结果。
[0027]根据本申请第三方面实施例的电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述计算机程序时实现上述任一实施例所述的函数的返回值类型检测方法。
[0028]根据本申请第四方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的函数的返回值类型检测方法。
[0029]根据本申请第五方面实施例的计算机程序产品,包括:所述计算机程序被处理器执行时实现如上述任一实施例所述的函数的返回值类型检测方法。
[0030]本申请实施例中的上述一个或多个技术方案,至少具有如下技术效果之一:
[0031]通过目标代码中目标函数的各return语句来调用目标函数,得到各目标值,以根据目标值的数据类型,来得到目标函数的返回值类型检测结果,从而可通过调用目标函数运行不同的return语句得到的目标值的数据类型,来判断目标函数的返回值类型是否一致,从而无需训练神经网络模型即可确定返回值类型的检测结果,避免出现因训练样本和样本标签的准确度较低,导致使用神经网络模型进行返回值类型检测时检测准确度低的情况,进而能够准确地检测函数的返回值类型是否一致。
附图说明
[0032]为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033]图1是本申请实施例提供的函数的返回值类型检测方法的第一流程示意图;
[0034]图2是本申请实施例提供的函数的返回值类型检测方法的第二流程示意图;
[0035]图3是本申请实施例提供的函数的返回值类型检测方法的第三流程示意图;
[0036]图4是本申请实施例提供的函数的返回值类型检测方法的第四流程示意图;
[0037]图5是本申请实施例提供的函数的返回值类型检测装置的结构示意图;
[0038]图6是本申请实施例提供的电子设备的结构示意图。
具体实施方式
[0039]下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
[0040]除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
[0041]在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种函数的返回值类型检测方法,其特征在于,包括:根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值;根据各所述目标值的数据类型,得到所述目标函数的返回值类型检测结果。2.根据权利要求1所述的函数的返回值类型检测方法,其特征在于,还包括:根据所述目标代码中,所述目标函数的起始位置以及所述目标函数的下一函数的起始位置,确定与所述目标函数对应的代码区域;对所述代码区域进行遍历,得到所述目标函数的各return语句。3.根据权利要求1或2所述的函数的返回值类型检测方法,其特征在于,根据目标代码中目标函数的各return语句,调用所述目标函数,得到各目标值,包括:确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值。4.根据权利要求3所述的函数的返回值类型检测方法,其特征在于,确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值,包括:确定所述目标函数的各return语句中,存在数据类型无法识别的待定return语句,检测所述目标函数的各剩余return语句的数据类型;在各所述剩余return语句的数据类型一致的情况下,根据所述目标函数的各return语句,调用所述目标函数,得到各目标值;其中,各所述剩余return语句为所述目标函数中除各所述目标return语句外的return语句。5.根据权利要...

【专利技术属性】
技术研发人员:黄媛黄俞荣宋永政余祖愿
申请(专利权)人:山石网科通信技术股份有限公司
类型:发明
国别省市:

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

1