CN113138924A - 一种基于图学习的线程安全代码识别方法 - Google Patents

一种基于图学习的线程安全代码识别方法 Download PDF

Info

Publication number
CN113138924A
CN113138924A CN202110440403.8A CN202110440403A CN113138924A CN 113138924 A CN113138924 A CN 113138924A CN 202110440403 A CN202110440403 A CN 202110440403A CN 113138924 A CN113138924 A CN 113138924A
Authority
CN
China
Prior art keywords
graph
vector
domain access
thread
neural network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110440403.8A
Other languages
English (en)
Other versions
CN113138924B (zh
Inventor
薄莉莉
季龙炳
欧阳旻昊
张睿
孙小兵
李斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yangzhou University
Original Assignee
Yangzhou University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yangzhou University filed Critical Yangzhou University
Priority to CN202110440403.8A priority Critical patent/CN113138924B/zh
Publication of CN113138924A publication Critical patent/CN113138924A/zh
Application granted granted Critical
Publication of CN113138924B publication Critical patent/CN113138924B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于图学习的线程安全代码识别方法,属于软件测试领域;具体包括:构建得到线程安全数据集;将线程安全数据集中的类转化为可供分析的域访问图;构建以域访问图为输入、以分类标签为输出的GMN神经网络模型;采用匹配池对构建的GMN神经网络模型进行训练,得到训练好的GMN神经网络模型;将待安全识别的类对应转化成域访问图,而后输入至训练好的GMN神经网络模型,得到识别结果;本发明使用域访问图的结构,充分体现了并发程序中不同的访问关系,基于训练好的GMN神经网络模型的注意力机制进行跨图匹配,达到对线程安全代码的识别,更具普适性,通用性,且极大地提升了预测结果的准确性。

Description

一种基于图学习的线程安全代码识别方法
技术领域
本发明属于软件调试领域,具体涉及一种基于图学习的线程安全代码识别方法。
背景技术
由于共享内存机制和不确定的线程调度,并发软件难以正确编程、测试和调试。编写一个正确且高效的并发软件是极具挑战性的。通常情况下使用类的开发人员并不总是清楚该类是否是线程安全的,原因是许多类不提供任何或只提供关于其线程安全性的部分信息,据统计目前78%左右的类都是未记录线程安全性的,导致其线程安全性十分模糊,最终会带来可怕的结果。为了加快开发速度并减轻开发困难,编程人员通常使用已经封装好的线程安全类。线程安全类保证了执行行为与线性地调用共享实例上的并发调用方法等价。因此,确保线程安全类的正确性对于保证整个并发软件正确运行是至关重要的。识别可能存在线程安全性问题的代码可以有效缩小错误检测的范围,从而提高并发缺陷检测的效率。
目前,并发缺陷的检测技术日趋成熟,主要分为静态分析、动态分析和二者结合的混合分析。现有的并发缺陷检测方法分别在识别不同规模的可疑代码上做了相关工作,有语句级别、语句块级别和执行序列级别。但都是基于现有的静态分析、动态分析或二者混合分析的方法。静态检测以人为定义的缺陷模式为指导,对所分析文件进行模式提取和对比,以检测并发缺陷。因其相对保守,误报率比较高,有时需要较多的人工干预,但是,静态检测操作简单,计算量相对较少。动态检测通过动态地执行被测程序,以期望能够触发程序异常,并且触发的异常都是真实存在的问题,人工干预度比较低,因此,误报率比较低,但由于并发交错执行的不确定性,漏报率比较高。无论静态分析或动态分析,都会消耗大量的时间和精力。
发明内容
本发明目的:为解决现有静态检测存在的误报率高、人工干预度高等问题以及解决现有动态检测存在的不确定性、漏报率高等问题,本发明提出了一种线程安全代码识别方法,基于现有的大量缺陷数据库中对线程安全类的缺陷报告数据,利用数据挖掘、深度学习等技术,快速有效地检测未知类的线程安全性,并具有构造方式新颖、特征属性提取能力优异、泛化性能和准确度较高等特点。
技术方案:一种基于图学习的线程安全代码识别方法,包括以下步骤:
S100:从开源文档中采集代码以及对应的DOC文档,利用爬虫技术,根据预设的关键字筛选出与线程安全性相关的API文档,根据API文档中的描述定位相应的类,对定位的类中线程安全的方法和线程不安全的方法进行人工标记,将人工标签后的类作为数据样本,构建得到线程安全数据集;
S200:将线程安全数据集中的类对应转化为带有安全性标签的域访问图,由所有带有安全性标签的域访问图构建得到匹配池;
S300:构建以域访问图为输入、以相似度为输出的GMN神经网络模型;采用匹配池中的域访问图对构建的GMN神经网络模型进行训练,得到训练好的GMN神经网络模型;
S400:预测未知源代码时,将待安全识别的类对应转化成域访问图,而后输入至训练好的GMN神经网络模型,得到识别结果。
进一步的,所述S200通过以下子步骤实现:
S210:对线程安全数据集中的类进行静态分析,提取出该类的一元属性及二元属性,选择与并发相关的属性;
S220:根据S210得到的属性,将程序元素属性定义为域访问图的顶点,将顶点之间的二元关系定义为域访问图的特殊节点,每个特殊节点采用关系名称进行标记,通过一组有向无标记边连接两个顶点,构造得到类图,记为
Figure BDA0003034791790000021
其中,VC表示类C中的节点集合,EC表示类C中的边集合;
S230:设
Figure BDA0003034791790000022
为类C的域的非空子集,根据类图
Figure BDA0003034791790000023
构造得到单域访问图
Figure BDA0003034791790000024
其中,
Figure BDA0003034791790000025
EF表示连接顶点的边;
S240:按照S230,为类C中的每个域构造一个域访问图,基于类C中方法的标签,为每个域访问图标注标签。
进一步的,所述GMN神经网络模型包括:图编码器、传播器和聚合器;
所述图编码器,以域访问图作为输入,将域访问图中的顶点和边映射为初始顶点向量和边向量;
所述传播器,将图编码器输出的初始顶点向量和边向量进行T轮传播,得到一组顶点的向量表达;
所述聚合器,对传播器输出的顶点的向量表达进行聚合,得到图向量表达;对图向量表达进行相似度度量,得到分类标签。
进一步的,在图编辑器中,对域访问图中的顶点、边进行编码,得到顶点特征向量xi、边特征向量xij;采用MLP算法,将顶点特征向量xi、边特征向量xij映射为初始顶点向量hi (0)和边向量eij
Figure BDA0003034791790000026
Figure BDA0003034791790000027
式中,MLPnode为输出顶点特征向量的多层感知器,MLPedge为输出边特征向量的多层感知器。
进一步的,在传播器中,当进行第t轮传播时:
将顶点向量{hi (t)i∈V}映射到新的顶点向量{hi (t+1)i∈V},表示如下:
mj→i=fmessage(hi (t),hj (t),eij) (4)
hi (t+1)=fnode(hi (t),∑j:(j,i)∈Emj→i) (5)
式中,fmessage为将输入信息联系起来的神经网络函数,将两个节点以及连接边作为输入信息得到i→j的向量信息;fnode是一个MLP或递归神经网络核心函数;
其中,公式(5)中的和运算符可由mean、max、基于attention-based的加权和中的任意一个替代。
进一步的,在传播器中,当进行第t轮传播时,增加了交叉图匹配向量进行节点更新:
通过fmatch函数将向量表达转为交叉图信息向量,交叉图信息向量和作为输入,通过fnode函数计算得到新的顶点向量{hi (i+1) i∈V},表示如下:
Figure BDA0003034791790000031
Figure BDA0003034791790000032
Figure BDA0003034791790000033
式中,fmatch是一个交叉信息匹配的函数,用于得出一个图中的节点与另一个图中的一个或多个节点的匹配程度ui→i
进一步的,在fmatch函数中引入注意力权重aj→i,得到两个不同顶点向量的匹配程度ui→i,表示为:
Figure BDA0003034791790000034
uj→i=aj→i(hi (t)-hj (t)) (10)
Figure BDA0003034791790000035
式中,Sh为向量空间相似性度量函数。
进一步的,在聚合器中,根据下式对传播器输出的顶点的向量表达进行聚合,得到图向量表达:
Figure BDA0003034791790000041
式中,hG为图向量表达;
根据下式对图向量表达进行相似度度量,得到分类标签Lpair
Figure BDA0003034791790000042
其中,hG1,hG2为图向量表示,d(hG1,hG2)表示相似度度量,γ>0为边界参数,t∈{-1,1}为基于hG1,hG2的标签产生的相似度,t=1对应相似,t=-1对应不相似。
进一步的,S200中,所述的匹配池由以下步骤构建得到:
为每张域访问图生成对应的label;
根据下式,基于标注了不同标签的域访问图构成匹配池:
MatchingSet={∑(Gi,label=labelGi)} (15)
式中,label=1对应negative标签,label=0对应positive标签,Gi对应已标注域访问图。
有益效果:本发明与现有技术相比,具有以下优点:
(1)本发明采用域访问图对并发程序代码段进行表示,通过设计多种类型的节点和边来表达线程安全代码丰富的语法语义信息;
(2)本发明采用GMN训练模型方法,采用向量间的跨图匹配,极大的提高了并发缺陷检测的准确度;
(3)本发明引入关系编码的方法和注意力机制,相比于传统的编码器,引入注意力机制的编码器参数更少,速度更快,对距离较远的结点之间使用关系编码的方法将距离信息编码,使编码器对于结点之间的长距离依赖关系有更强的学习能力。
附图说明
图1为一个实施例中的文档样本;
图2为一个实施例中基于图学习的线程安代码识别技术的流程图;
图3为一个实施例中的线程安全代码片段;
图4为一个实施例中生成的域访问图;
图5为一个实施例中GMN神经网络模型。
具体实施方式
现结合附图和实施例进一步阐述本发明的技术方案。
本实施例以对如图3所示的Bank类的线程安全性进行判断为例,来进一步说明本发明提出的一种基于图学习的线程安全代码识别方法的准确性和高效性,具体按照以下步骤执行线程安全性判断:
S100:构建线程安全数据集:从开源文档中采集代码以及对应的DOC文档,利用爬虫技术,根据预设的关键字筛选出与线程安全性相关的API文档,根据API文档中的描述定位相应的代码段,从中将线程安全的方法和线程不安全的方法进行人工标记;图1为数据集中一段文档样本。
本实施例预设的关键字为”thread-safe”、”thread-unsafe”、”synchronized”、“lock”、“unlock”、“data race”、“atomic”、“deadlock”;在其他实施例中,可根据实际情况设置关键字。
S200:域访问图的建立:将线程安全数据集中的线程安全相关性代码转化为可供分析的域访问图结构;具体通过以下子步骤实现:
S210:采用静态分析提取技术,对经S100人工标签处理的代码段分析提取出待分析的程序段的一元属性(Unary Properties)及二元属性(Binary Properties),选择与并发相关的属性,二元属性是基于一元属性产生的,一元属性与二元属性是一种并列关系,与并发相关的属性是它们各自子集的并集。
例如:设C是被分析的类,Cf为字段集,Cm为方法集,Cconst为C定义的类构造函数和静态构造函数集,则C的一元属性集为:Cunary=Cf∪Cm∪Cconst
例如:为了捕捉程序元素属性之间的关系,分析提取了几个二元属性:
设C是被分析的类,Cf为字段集,Cm为方法集,Cconst为C定义的类构造函数和静态构造函数集。定义以下二元关系:
Calls表示方法之间的调用关系,表示为:Calls:{Cconst∪Cm}×{Cconst∪Cm};
Reads表示对域的读访问,表示为:Reads:{Cconst∪Cm}×{Cf};
Writes表示对域的写访问,表示为:Writes:{Cconst∪Cm}×{Cf};
Sync表示对方法的读写锁保护,表示为:Sync:{Cm}×{this,lock};
Mod表示对静态函数、构造函数、方法、字段的修饰关键字,表示为:Mod:{Cconst∪Cm∪Cf}×{public,protected,private,static,volatile,final};
C的二元属性集为:Cbinary=Calls∪Reads∪Writes∪Sync∪Mod。
二元属性捕获了与线程安全预测任务相关的一组丰富的关系,例如,一个方法是否是公共的,一个方法读写什么字段,以及一个方法是否是同步的。
S220:经过S210提取得到的属性,其中:
VC=VRels∪Cunary ∪{this,lock,public,protected,private,static,volatile,final}表示程序元素及其属性的顶点,VRels={Calls,Reads,Writes,Sync,Mod}表示Cbinary中不同关系的特殊节点;每个特殊节点都用关系的名称(即调用、读取、写入、同步或修饰)进行标记,并通过一组有向无标记边连接两个顶点;特殊节点是包含一类具体二元关系信息的节点。例如属性field定义了顶点Va,由属性method定义了顶点Vb,而二者间产生了二元关系writes,因此由有一个特殊节点Vc包含writes信息。基于上述定义好的顶点和边,构造类图;
给定一类C的域集合Cf的非空子集
Figure BDA0003034791790000061
和一类图
Figure BDA0003034791790000062
其中
Figure BDA0003034791790000063
构造单域访问图
Figure BDA0003034791790000064
该单域访问图包含从F可到达的所有顶点,即
Figure BDA0003034791790000065
并包含连接这些顶点的所有边;
为类C中的每个域构造一个域访问图,保存在磁盘中。并且根据步骤S100中为方法的标签,为域访问图集合中涉及该方法的域访问图人工地标注是否线程安全的标签。
S300:构建如图5所示的GMN神经网络模型,该GMN神经网络模型为学习图中的相似度匹配的一个过程,主要包括图编码器、传播器和聚合器;具体通过以下子步骤实现:
S310:将单域访问图编码为placeholder字典,其中,特征placeholder-tensor是指,通过将原本的节点/边的特征进行转化得到的单热(One-Hot)编码:
Feature→Np.Array=[0,1,......,0,0] (1)
其中,Np.Array表示将节点/边的特征编码为一个一维的Numpy数组。对于节点属性,数组长度为29,对于边属性,数组长度为17,因此一个域访问图中的特征就被编码为了高维的Numpy数组,该数组中每一行对应一个节点/边特征。
S320:输入S200所得的域访问图,编码器通过单独的MLP算法(这里的MLP算法是一种多层感知器,泛称为神经网络)将顶点xi和边特征xij通过相应的算法映射到初始顶点和边向量,hi代表映射之后的顶点向量,eij代表边向量:
Figure BDA0003034791790000066
Figure BDA0003034791790000067
式中,xi,xij对应S310中编码产生的特征向量。
S330:经由S320初始化节点之后,传播层将一组顶点表示{hi (t)i∈v}映射到新的顶点表示{hi (t+1)i∈v},表示如下:
mj→i=fmessage(hi (t),hj (t),eij) (4)
hi (t+1)=fnode(hi (t),∑j:(j,i)∈Emj→i) (5)
式中,fmessage通常是一个将输入信息联系起来的神经网络函数,将两个节点以及连接边作为输入信息得到i→j的向量信息,fnode是一个MLP或递归神经网络核心函数,例如RNN(RecurrentNeural Network,一种用于处理序列数据的神经网络)、GRU(GatedRecurrent Unit,一种门控循环单元)或LSTM(Long short-term memory,一种特殊的RNN),最终输出的hi (t+1)是通过fnode函数处理mi→j边信息以及原始顶点信息hi (t)后输出的节点信息。为聚合信息,使用了一个简单的和,它可以被其他交换运算符替代,例如mean、max或基于attention-based的加权和。通过多层传播,每个节点的表示将在其局部邻域中积累信息。
S340:在GMN模型中增加了交叉图匹配向量,实现传播层中的节点更新模块,具体计算公式如下:
Figure BDA0003034791790000071
Figure BDA0003034791790000072
Figure BDA0003034791790000073
上述式中,fmatch是一个交叉信息匹配的函数,得出一个图中的节点与另一个图中的一个或多个节点的匹配程度,即uj→i。即经过更新后的节点信息hi (t+1)中考虑了边连接信息mj→i和相似度匹配信息uj→i,使得结果更为精确。
在fmatch函数中使用基于attention-based(注意力机制)的模块,首先计算注意力权重aj→i,再通过代入计算得到两个不同点信息的差异信息uj→i,具体如下:
Figure BDA0003034791790000074
uj→i=aj→i(hi (t)-hj (t)) (10)
因此,对得到的值进行累计求和,获得总体交叉图匹配信息uj→i
Figure BDA0003034791790000075
上述式子,Sh又是一个向量空间相似性度量函数,类似于欧氏或余弦相似性,aj→i是注意力权重,uj→i用来测量hi和它在另外一张图中邻接的差异性。在aj→i的规范化中,函数fmatch隐式地依赖于{hi}的整个集合,在等式中省略了该集合,以获得更清晰的表示法。由于是基于注意力机制,权重会被每对跨图的节点表达访问。
S350:在T轮的传播后,聚合层获得了一组关于顶点的向量表达,随后计算基于顶点hi表达产生的图向量表示。使用如下的聚合模块:
Figure BDA0003034791790000076
在该MLP聚合模块中,转化顶点hi通过一个带有权重的门控MLP产生筛选了无关信息后的图向量表达hG
S360:为产生的两个图向量表示hG1,hG2表达进行相似度度量,得出图总体相似度:
s=fs(hG1,hG2) (13)
这里fs是得出hG1和hG2之间的标准向量空间相似性函数,这里的相似度度量函数可以使用海明相似度,欧几里得相似度和余弦相似度,本实施例中使用的是欧几里得相似度。
S370:基于产生的一组图向量表达以及其原本对应的标签,产生Lpair
Figure BDA0003034791790000081
其中,hG1,hG2为S350中产生的图向量表示,d(hG1,hG2)表示欧几里得距离度量,γ>0为边界参数。t∈{-1,1}为基于hG1,hG2的标签产生的相似度,t=1对应相似,t=-1对应不相似。
S380:经过上述步骤后构建得到GMN神经网络模型后,预处理将要作为匹配池的域访问图。具体操作为:
为每对域访问图基于文档生成对应的标签。根据下式,基于标注了不同标签的域访问图构成匹配池:
MatchingSet={∑(Gi,label=labelGi)} (15)
式中,label=1对应negative标签,label=0对应positive标签,Gi表示已标注标签的域访问图。
采用匹配池对构建的GMN神经网络模型进行训练,为训练时的输入设置最大值MAX_TRAINING_STEP,以确保在训练时不会产生过拟合进而对结果造成不利影响。同时为了完成训练时的模型观测,当训练次数达到MAX_TRAINIING_STEP/10时,产生用于评估模型训练状态的输出,其中包含输入图对的欧几里得距离。
S400:利用训练好的GMN神经网络模型对如图3所示的Bank类进行线程安全检测;具体通过以下步骤实现:
S410:将如图3所示的Bank类按照S200转化为可供分析的域访问图,得到图4所示以Bank_Tota1为关键字段的域访问图;
S420:将域访问图输入至训练好的GMN神经网络模型进行线程安全违背检测:
Figure BDA0003034791790000082
Figure BDA0003034791790000083
nts_label=[nts_poss-ts_poss]+1 (18)
其中,ts_poss、nts_poss为对于任意一张属于匹配池的域访问图与输入图进行相似度比较并且求平均相似度的结果,fs为相似度度量函数,Ginput为待预测域访问图,Gi指已知标签域访问图,tsMatchingset为所有标签为安全的域访问图集合,ntsMatchingset为所有标签为不安全的域访问图集合,len为集合大小,mean为求平均函数。nts_label∈{0,1}即为域访问图预测产生的标签,0对应线程安全,1对应线程不安全。
最终此Bank类分析结果为:
ts_poss=0.000858550413944;nts_poss=0.000916998519896,nts_poss的指数高于ts_poss,据此判断此类为线程不安全类。
通过上述实施例可知,本发明提出的线程安全代码识别方法通过精简待分析类,同时使用静态分析提取技术来实现更加精确直观的图结构,同时选取与输入相匹配的GMN模型进行训练,很好地达到了判别线程安全性的目的,极大的提升了缺陷检测的正确性和效率。

Claims (9)

1.一种基于图学习的线程安全代码识别方法,其特征在于:包括以下步骤:
S100:从开源文档中采集代码以及对应的DOC文档,利用爬虫技术,根据预设的关键字筛选出与线程安全性相关的API文档,根据API文档中的描述定位相应的类,对定位的类中线程安全的方法和线程不安全的方法进行人工标记,将人工标签后的类作为数据样本,构建得到线程安全数据集;
S200:将线程安全数据集中的类对应转化为带有安全性标签的域访问图,由所有带有安全性标签的域访问图构建得到匹配池;
S300:构建以域访问图为输入、以相似度为输出的GMN神经网络模型;采用匹配池中的域访问图构建的GMN神经网络模型进行训练,得到训练好的GMN神经网络模型;
S400:预测未知源代码时,将待安全识别的类对应转化成域访问图,而后输入至训练好的GMN神经网络模型,得到识别结果。
2.根据权利要求1所述的一种基于图学习的线程安全代码识别方法,其特征在于:所述S200通过以下子步骤实现:
S210:对线程安全数据集中的类进行静态分析,提取出该类的一元属性及二元属性,选择与并发相关的属性;
S220:根据S210得到的属性,将程序元素属性定义为域访问图的顶点,将顶点之间的二元关系定义为域访问图的特殊节点,每个特殊节点采用关系名称进行标记,通过一组有向无标记边连接两个顶点,构造得到类图,记为
Figure FDA0003034791780000011
其中,VC表示类C中的节点集合,EC表示类C中的边集合;
S230:给定一类C的域集合Cf的非空子集
Figure FDA0003034791780000012
和类图
Figure FDA0003034791780000013
构造得到单域访问图
Figure FDA0003034791780000014
EF表示连接顶点的边,其中:
Figure FDA0003034791780000015
S240:按照S230,为类C中的每个域构造一个域访问图,基于类C中方法的标签,为每个域访问图标注标签。
3.根据权利要求1所述的一种基于图学习的线程安全代码识别方法,其特征在于:所述GMN神经网络模型包括:图编码器、传播器和聚合器;
所述图编码器,以域访问图作为输入,将域访问图中的顶点和边映射为初始顶点向量和边向量;
所述传播器,将图编码器输出的初始顶点向量和边向量进行T轮传播,得到一组顶点的向量表达;
所述聚合器,对传播器输出的顶点的向量表达进行聚合,得到图向量表达;对图向量表达进行相似度度量,得到分类标签。
4.根据权利要求3所述的一种基于图学习的线程安全代码识别方法,其特征在于:在图编辑器中,对域访问图中的顶点、边进行编码,得到顶点特征向量xi、边特征向量xij;采用MLP算法,将顶点特征向量xi、边特征向量xij映射为初始顶点向量hi (0)和边向量eij
Figure FDA0003034791780000021
Figure FDA0003034791780000022
式中,MLPnode为输出顶点特征向量的多层感知器,MLPedge为输出边特征向量的多层感知器。
5.根据权利要求3所述的一种基于图学习的线程安全代码识别方法,其特征在于:在传播器中,当进行第t轮传播时:
将顶点向量{hi (t)i∈V}映射到新的顶点向量{hi (t+1)i∈V},表示如下:
mj→i=fmessage(hi (t),hj (t),eij) (4)
hi (t+1)=fnode(hi (t),∑j:(j,i)∈Emj→i) (5)
式中,fmessage为将输入信息联系起来的神经网络函数,将两个节点以及连接边作为输入信息得到i→j的向量信息;fnode是一个MLP或递归神经网络核心函数;
其中,公式(5)中的和运算符可由mean、max、基于attention-based的加权和中的任意一个替代。
6.根据权利要求3所述的一种基于图学习的线程安全代码识别方法,其特征在于:在传播器中,当进行第t轮传播时,增加了交叉图匹配向量进行节点更新:
通过fmatch函数将向量表达转为交叉图信息向量,交叉图信息向量和作为输入,通过fnode函数计算得到新的顶点向量{hi (t+1)i∈V},表示如下:
Figure FDA0003034791780000023
Figure FDA0003034791780000024
Figure FDA0003034791780000025
式中,fmatch是一个交叉信息匹配的函数,用于得出一个图中的节点与另一个图中的一个或多个节点的匹配程度uj→i
7.根据权利要求6所述的一种基于图学习的线程安全代码识别方法,其特征在于:在fmatch函数中引入注意力权重aj→i,得到两个不同顶点向量的匹配程度uj→i,表示为:
Figure FDA0003034791780000031
uj→i=aj→i(hi (t)-hj (t)) (10)
Figure FDA0003034791780000032
式中,Sh为向量空间相似性度量函数。
8.根据权利要求3所述的一种基于图学习的线程安全代码识别方法,其特征在于:在聚合器中,根据下式对传播器输出的顶点的向量表达进行聚合,得到图向量表达:
Figure FDA0003034791780000033
式中,hG为图向量表达;
根据下式对图向量表达进行相似度度量,得到分类标签Lpair
Figure FDA0003034791780000034
其中,hG1,hG2为图向量表示,d(hG1,hG2)表示相似度度量,γ>0为边界参数,t∈{-1,1}为基于hG1,hG2的标签产生的相似度,t=1对应相似,t=-1对应不相似。
9.根据权利要求1所述的一种基于图学习的线程安全代码识别方法,其特征在于:S200中,所述的匹配池由以下步骤构建得到:
为每张域访问图生成对应的标签;
根据下式,基于标注了不同标签的域访问图构成匹配池:
MatchingSet={∑(Gi,label=labelGi)} (15)
式中,label=1对应negative标签,label=0对应positive标签,Gi表示已标注标签的域访问图。
CN202110440403.8A 2021-04-23 2021-04-23 一种基于图学习的线程安全代码识别方法 Active CN113138924B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110440403.8A CN113138924B (zh) 2021-04-23 2021-04-23 一种基于图学习的线程安全代码识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110440403.8A CN113138924B (zh) 2021-04-23 2021-04-23 一种基于图学习的线程安全代码识别方法

Publications (2)

Publication Number Publication Date
CN113138924A true CN113138924A (zh) 2021-07-20
CN113138924B CN113138924B (zh) 2023-10-31

Family

ID=76813468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110440403.8A Active CN113138924B (zh) 2021-04-23 2021-04-23 一种基于图学习的线程安全代码识别方法

Country Status (1)

Country Link
CN (1) CN113138924B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550594A (zh) * 2015-12-17 2016-05-04 西安电子科技大学 安卓应用文件的安全性检测方法
CN106446933A (zh) * 2016-08-31 2017-02-22 河南广播电视大学 基于上下文信息的多目标检测方法
CN107169358A (zh) * 2017-05-24 2017-09-15 中国人民解放军信息工程大学 基于代码指纹的代码同源性检测方法及其装置
CN108446540A (zh) * 2018-03-19 2018-08-24 中山大学 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
US20190354689A1 (en) * 2018-05-18 2019-11-21 Deepmind Technologies Limited Deep neural network system for similarity-based graph representations
CN111552969A (zh) * 2020-04-21 2020-08-18 中国电力科学研究院有限公司 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置
CN111783100A (zh) * 2020-06-22 2020-10-16 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN112288079A (zh) * 2020-11-17 2021-01-29 北京轩宇信息技术有限公司 图神经网络模型训练方法、软件缺陷检测方法及系统
CN112364352A (zh) * 2020-10-21 2021-02-12 扬州大学 可解释性的软件漏洞检测与推荐方法及系统
CN112579477A (zh) * 2021-02-26 2021-03-30 北京北大软件工程股份有限公司 一种缺陷检测方法、装置以及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550594A (zh) * 2015-12-17 2016-05-04 西安电子科技大学 安卓应用文件的安全性检测方法
CN106446933A (zh) * 2016-08-31 2017-02-22 河南广播电视大学 基于上下文信息的多目标检测方法
CN107169358A (zh) * 2017-05-24 2017-09-15 中国人民解放军信息工程大学 基于代码指纹的代码同源性检测方法及其装置
CN108446540A (zh) * 2018-03-19 2018-08-24 中山大学 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
US20190354689A1 (en) * 2018-05-18 2019-11-21 Deepmind Technologies Limited Deep neural network system for similarity-based graph representations
CN111552969A (zh) * 2020-04-21 2020-08-18 中国电力科学研究院有限公司 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置
CN111783100A (zh) * 2020-06-22 2020-10-16 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN112364352A (zh) * 2020-10-21 2021-02-12 扬州大学 可解释性的软件漏洞检测与推荐方法及系统
CN112288079A (zh) * 2020-11-17 2021-01-29 北京轩宇信息技术有限公司 图神经网络模型训练方法、软件缺陷检测方法及系统
CN112579477A (zh) * 2021-02-26 2021-03-30 北京北大软件工程股份有限公司 一种缺陷检测方法、装置以及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"面向缺陷知识的多特征匹配搜索算法" *
JIANJUN HE ET AL.: "Duplicate Bug Report Detection Using Dual-Channel Convolutional Neural Networks" *
YUJIA LI ET AL.: "Graph matching networks for learning the similarity of graph structured objects" *
ZHEN NI ET AL.: "Analyzing bug fix for automatic bug cause classification" *

Also Published As

Publication number Publication date
CN113138924B (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
CN111476294B (zh) 一种基于生成对抗网络的零样本图像识别方法及系统
Ruff et al. A unifying review of deep and shallow anomaly detection
US20210150338A1 (en) Identification of fields in documents with neural networks without templates
US11586860B2 (en) Method for preventing the extraction of a machine learning model
CN112990280B (zh) 面向图像大数据的类增量分类方法、系统、装置及介质
CN112257441B (zh) 一种基于反事实生成的命名实体识别增强方法
CN111597340A (zh) 一种文本分类方法及装置、可读存储介质
Li et al. One-class knowledge distillation for face presentation attack detection
CN111222981A (zh) 可信度确定方法、装置、设备和存储介质
CN116309580B (zh) 基于磁应力的油气管道腐蚀检测方法
CN111985207B (zh) 一种访问控制策略的获取方法、装置及电子设备
CN116383399A (zh) 一种事件舆情风险预测方法及系统
CN115344863A (zh) 一种基于图神经网络的恶意软件快速检测方法
CN114036531A (zh) 一种基于多尺度代码度量的软件安全漏洞检测方法
CN117009968A (zh) 恶意代码的同源分析方法、装置、终端设备及存储介质
CN116739100A (zh) 量子神经网络的漏洞检测方法及自动驾驶漏洞检测方法
CN117152504A (zh) 一种空间相关性引导的原型蒸馏小样本分类方法
CN113138924B (zh) 一种基于图学习的线程安全代码识别方法
CN111435453B (zh) 细粒度图像零样本识别方法
CN116663539A (zh) 基于RoBERTa和指针网络的中文实体与关系联合抽取方法及系统
CN116932938A (zh) 基于拓扑结构和属性信息的链接预测方法及系统
Joren et al. Learning document graphs with attention for image manipulation detection
CN116580243A (zh) 一种掩码图像建模引导域适应的跨域遥感场景分类方法
CN116485406A (zh) 账户的检测方法及装置、存储介质和电子设备
Deng et al. MisDetect: Iterative Mislabel Detection using Early Loss

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant