一种程序并发缺陷检测方法、装置、设备以及存储介质制造方法及图纸

技术编号:26970052 阅读:13 留言:0更新日期:2021-01-05 23:59
本说明书一个或多个实施例提供一种程序并发缺陷检测方法、装置、设备以及存储介质。该方法包括:获取目标检测数据以及获取目标检测数据中的函数;根据目标检测数据以及函数之间的调用关系,得到函数调用序列链表;获取每个函数中的代码块;根据函数以及代码块之间的调用关系,得到代码块调用序列数组;根据目标检测数据、函数调用序列链表、代码块调用序列数组以及预设条件,确定并发缺陷以及并发缺陷的位置,并输出。本实现方式通过调用函数调用序列链表、代码块调用序列数组以及预设条件,对程序中源代码进行深层次的分析和检测,可以实现快速、准确地确定程序并发缺陷发生的类型以及位置,以便于及时处理缺陷,确保程序的健壮性和可靠性。

【技术实现步骤摘要】
一种程序并发缺陷检测方法、装置、设备以及存储介质
本说明书一个或多个实施例涉及计算机应用
,尤其涉及一种程序并发缺陷检测方法、装置、设备以及存储介质。
技术介绍
随着硬件性能的快速发展与大数据时代的来临,并发编程日益成为编程中不可忽略的重要组成部分。并发编程是非常广泛的概念,其向下依赖于操作系统、存储等,与分布式系统、微服务系统等,而又会具体落地于Java并发编程、Go并发编程、JavaScript异步编程等领域。云计算技术的出现是为了在所有维度上(内存、计算、存储等)实现无限的可扩展性,而并发编程技术及其相关理论也是构建大规模分布式应用的基础,也是建设我国未来信息产业的关键技术之一。现有并发缺陷的研究多数集中在多线程系统,分布式系统,C/C++/Java等传统语言的大型应用程序和某些轻量的客户端JavaScript应用程序。Go语言作为“年轻”、“用途广”和“新特性”的并发编程语言,对Go语言并发缺陷的检测是程序分析和保证程序可靠性必不可少的内容。目前针对Go语言并发缺陷的检测效果不好。
技术实现思路
<br>有鉴于此,本说本文档来自技高网...

【技术保护点】
1.一种程序并发缺陷检测方法,其特征在于,包括:/n获取目标检测数据以及获取所述目标检测数据中的函数;/n根据所述目标检测数据以及所述函数之间的调用关系,得到函数调用序列链表;/n获取每个函数中的代码块;/n根据所述函数以及所述代码块之间的调用关系,得到代码块调用序列数组;/n根据所述目标检测数据、所述函数调用序列链表、所述代码块调用序列数组以及预设条件,确定并发缺陷以及并发缺陷的位置,并输出。/n

【技术特征摘要】
1.一种程序并发缺陷检测方法,其特征在于,包括:
获取目标检测数据以及获取所述目标检测数据中的函数;
根据所述目标检测数据以及所述函数之间的调用关系,得到函数调用序列链表;
获取每个函数中的代码块;
根据所述函数以及所述代码块之间的调用关系,得到代码块调用序列数组;
根据所述目标检测数据、所述函数调用序列链表、所述代码块调用序列数组以及预设条件,确定并发缺陷以及并发缺陷的位置,并输出。


2.根据权利要求1所述的方法,其特征在于,所述获取目标检测数据,包括:
获取压缩源代码数据;
解压所述压缩源代码数据,得到解压源代码数据;
编译所述解压源代码数据,得到目标检测数据,并获取。


3.根据权利要求1所述的方法,其特征在于,所述根据所述目标检测数据以及所述函数之间的调用关系,得到函数调用序列链表,包括:
确定所述目标检测数据中的目标函数;
以所述目标函数为初始节点,将所述目标函数中第一个代码块中的第一个目标指令所指示的函数确定为第一节点,将所述目标函数中最后一个代码块中的最后一个目标指令所指示的函数确定为第N节点,N为正整数;
根据所述目标函数中代码块之间的调用顺序以及每个代码块中所述目标指令的执行顺序,将所述第一节点至所述第N节点依次链接至所述初始节点,得到函数调用序列链表。


4.根据权利要求1所述的方法,其特征在于,每个代码块包括第一代码块标识和第二代码块标识;以及
所述根据所述函数以及所述代码块之间的调用关系,得到代码块调用序列数组,包括:
对于每个函数,将所述函数中的第一个代码块确定为第一元素;
根据所述函数中已执行的第n-1个代码块以及所述第二代码块标识,确定所述函数中将要执行的第n个代码块,其中,所述第n个代码块中不包括所述第二代码标识,其中,n为大于等于2的正整数;
将所述函数中的第n-1个代码块确定为第n-1元素;
将所述函数中的第n个代码块确定为第n元素;
根据所述第一元素至所述第n-1元素、所述第n元素以及代码块之间的调用关系,确定代码块调用序列子数组;
组合每个函数对应的所述代码块调用序列子数组,得到所述代码块调用序列数组。


5.根据权利要求1~4中任一项所述的方法,其特征在于,所述根据所述目标检测数据、所述函数调用序列链表、所述代码块调用序列数组以及预设条件,确定并发缺陷以及并发缺陷的位置,并输出,包括:
根据所述目标检测数据、所述函数调用序列链表、所述代码块调用序列数组,确定所述目标检测数据中是否含有预设的保护函数;
响应于确定所述目标检测数据中含有预设的保护函数,确定所述预设的保护函数所保护的目标变量;
获取所述目标检测数据中所有的所述目标变量;
对于每个所述目标变量,响应于确定该目标变量没有被所述预设的保护函数保护,确定存在并发缺陷,并将该目标变量的位置确定为并发缺陷的位置;
输出第一预设值以及没有被预设的保护函数保护的目标变量的位置。...

【专利技术属性】
技术研发人员:涂腾飞张华崔栋王华伟温巧燕秦佳伟高飞李文敏秦素娟金正平时忆杰
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京;11

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

1