【技术实现步骤摘要】
一种检查源代码中空指针的方法、系统、计算机设备及介质
[0001]本专利技术涉及软件
,特别涉及一种检查源代码中空指针的方法、系统、计算机设备及介质。
技术介绍
[0002]软件程序中如果直接使用空指针变量的一个属性,函数方法则会引起软件崩溃(Crash)。空指针是指针的一种,指针是指值为内存地址的一种变量,空指针则是内存地址为空(NULL)的指针变量。为了避免软件崩溃(Crash),通常需要通过判空保护来避免软件崩溃。
[0003]目前,通过采用CPPcheck工具进行判空保护,逻辑为:遇到函数会返回指针变量的代码行,则判断该代码行是否有判空保护,如果没有判空保护,则给该代码行报空指针崩溃代码告警。由于CPPcheck工具是在项目代码全部编辑结束后统一检查的,检查结束后如果存在大量的空指针,此时工程师需要重新花费大量的时间和精力去梳理项目代码中的功能逻辑,并逐一消除空指针的存在,该过程效率低下,从而拉长了项目开发周期。
技术实现思路
[0004]基于此,有必要针对消除空指针效率低的问题,提供一 ...
【技术保护点】
【技术特征摘要】
1.一种检查源代码中空指针的方法,其特征在于,所述方法包括:实时检测光标在待检查源代码中的目标位置;根据所述目标位置确定所述待检查源代码中的待检查方法代码片段;扫描所述待检查方法代码片段中自定义变量名,并在所述待检查方法代码片段中获取每个扫描的自定义变量名对应的被调用变量名;根据每个扫描的自定义变量名对应的被调用变量名确定每个扫描的自定义变量名是否出现空指针。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标位置确定所述待检查源代码中的待检查方法代码片段,包括:逐一获取所述待检查源代码中存在的函数方法名,得到多个函数方法名;计算每个函数方法名与所述目标位置之间的距离,并将最小距离的函数方法名作为目标函数方法名;以所述目标函数方法名为起点,在所述待检查源代码中执行逆向广度优先遍历算法,得到方法函数起始行;以所述目标函数方法名为起点,在所述待检查源代码中执行和正向广度优先遍历算法,得到方法函数结束行;读取所述方法函数起始行与所述方法函数结束行之间的代码内容,得到待检查方法代码片段。3.根据权利要求1所述的方法,其特征在于,根据每个扫描的自定义变量名对应的被调用变量名确定每个扫描的自定义变量名是否出现空指针,包括:判断每个扫描的自定义变量名和与其对应的被调用变量名之间的代码中是否存在针对每个扫描的自定义变量名进行等号赋值的赋值代码段;若不存在针对每个扫描的自定义变量名进行等号赋值的赋值代码段,则确定每个扫描的自定义变量名存在空指针;或者,若存在针对每个扫描的自定义变量名进行等号赋值的赋值代码段,则确定每个扫描的自定义变量名不存在空指针。4.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:当每个扫描的自定义变量名存在空指针时,获取空指针高亮标识符;将所述空指针高亮标识符展示在每个扫描的自定义变量名所在代码的起始位置处。5.根据权利要求1所述的方法,其特征在于,所述扫描所述待检查方法代码片段中自定义变量名,包括:根据所述数据类型字典对所述待检查方法代码片段进行正向匹配,得到多个第一数据类型标识符;根据所述数据类型字典对所述待检查方法代码片段进行负向匹配,得到多个第二...
【专利技术属性】
技术研发人员:何辉,
申请(专利权)人:平安付科技服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。