首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 受理局 / 形式要求 / 缺陷 / 一种基于缺陷报告分析的缺陷源代码定位方法

一种基于缺陷报告分析的缺陷源代码定位方法

阅读:667发布:2020-06-29

专利汇可以提供一种基于缺陷报告分析的缺陷源代码定位方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种基于 缺陷 报告分析的缺陷源代码 定位 方法,首先获得新的待检查缺陷报告;如果不存在缺陷定位模型,建立缺陷定位模型。建立缺陷定位模型:获取大量历史缺陷报告、源代码和缺陷定位标记,构造训练集合;初始化缺陷定位模型;利用当前模型,提取训练集合缺陷报告和源代码的统一特征;计算当前模型的缺陷定位训练误差;若缺陷定位模型的训练误差低于预设 阈值 ,模型训练完成,否则更新缺陷定位模型权重参数,继续训练。利用模型提取待检查的缺陷报告和源代码的统一特征并利用统一特征定位包含缺陷的源代码模 块 ;输出定位到的缺陷源代码模块;若还有缺陷报告尚未检查,继续获取并分析新的待检查缺陷报告,否则缺陷定位过程结束。,下面是一种基于缺陷报告分析的缺陷源代码定位方法专利的具体信息内容。

1.一种基于缺陷报告分析的缺陷源代码定位方法,其特征在于,包括如下步骤:
步骤(1)获得新的待检查缺陷报告;
步骤(2)判断是否已存在训练完成的缺陷定位模型,如果不存在,转入步骤(3),建立缺陷定位模型;如果存在,转入步骤(9);
步骤(3)获取历史缺陷报告、源代码和缺陷定位标记,构造训练集合;
步骤(4)初始化缺陷定位模型;
步骤(5)利用当前缺陷定位模型,提取训练集合缺陷报告和源代码的统一特征;
步骤(6)利用提取的统一特征,计算当前模型的缺陷定位训练误差;
步骤(7)若当前模型的训练误差低于预设阈值,模型训练完成,转入步骤(9),否则转入步骤(8);
步骤(8)更新缺陷定位模型权重参数,转入步骤(5)继续训练模型;
步骤(9)利用缺陷定位模型,提取待检查的缺陷报告和源代码统一特征;
步骤(10)利用统一特征定位包含缺陷的源代码模
步骤(11)输出定位到的缺陷源代码模块,将缺陷情况反馈给模块开发者;
步骤(12)若还有缺陷报告尚未检查,转步骤(1),否则缺陷定位过程结束;
在接收 到新的待检查缺陷报告后,首先利用基于自然语言的卷积神经网络模型提取缺陷报告的中层特征,同时利用基于程序语言的卷积神经网络提取对应源代码的中层特征,之后利用深层卷积网络融合两种中层特征,最终得到进行缺陷定位的统一特征;
训练误差 的计算公式如下:
w是目标函数更新模型参数,函数 为平方损失函数,yi,j为对于缺陷报告ri和源代码cj的缺陷定位情况标注,yi,j=+1表示代码cj是缺陷报告ri相关的缺陷代码,yi,j=-1表示代码cj不是缺陷报告ri相关缺陷代码,costn表示定位到无关代码的代价,costp是未成功定位一个相关缺陷代码的代价,costn,costp和λ是人工预设参数。

说明书全文

一种基于缺陷报告分析的缺陷源代码定位方法

技术领域

[0001] 本发明涉及一种基于缺陷报告分析的缺陷源代码定位方法,基于自然语言和程序语言统一特征进行缺陷报告分析,定位源代码缺陷情况并反馈给模开发者,属于自动化软件质量辅助维护技术领域。

背景技术

[0002] 软件质量保证是软件系统成功的关键元素。然而,随着软件系统的快速发展,用户对软件的需求日益增加,软件系统的功能也变得越来越复杂。在软件发布之前,面对庞大复杂的软件系统,开发人员很难对所有的模块进行详细测试,从而发现所有包含缺陷的模块,因此大多软件在发布后,通过软件缺陷报告来维护和保证软件质量。缺陷报告是一种用自然语言发布的文档,描述了软件在运行过程中出现的无法正常运行和满足需求的故障情况,通常由软件的用户提交,随后交给软件质量维护人员。当缺陷报告提交后,质量维护人员检查报告内容并在软件项目中查找和定位缺陷源代码,查找的缺陷源代码交由相关开发人员进行代码检查和修复。
[0003] 然而,软件缺陷报告数量很多,软件的源代码库也很庞大,人工缺陷定位花费太多时间和精,因此基于自动化软件质量辅助维护装置的软件缺陷定位是目前维护软件质量重要的工具。之前大多自动化软件缺陷定位装置,需要提取缺陷报告和源代码的文本中的关键词信息,并通过相似性匹配方法定位缺陷源代码。这种方式忽略了缺陷报告和软件源代码之间不同语言的差异,导致缺陷源代码定位结果不够好。而现有技术难以区分缺陷报告和源代码的语言差异,在自动化缺陷源代码定位问题中面临很大困难。

发明内容

[0004] 发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于缺陷报告分析的缺陷源代码定位方法,首先利用历史缺陷报告,源代码和缺陷定位标注信息,分别对缺陷报告和源代码分析得到中层特征,然后对中层特征进行深度融合,得到的统一特征对可以定位缺陷源代码位置,使得缺陷定位效果得到提升,用来改进自动化软件质量辅助维护装置。
[0005] 技术方案:一种基于缺陷报告分析的缺陷源代码定位方法,通过以下步骤,根据缺陷报告对缺陷源代码进行定位:
[0006] 步骤(1)获得新的待检查缺陷报告;
[0007] 步骤(2)判断是否已存在训练完成的缺陷定位模型,如果不存在,转入步骤(3),建立缺陷定位模型;如果存在,转入步骤(9);
[0008] 步骤(3)获取历史缺陷报告、源代码和缺陷定位标记,构造训练集合;
[0009] 步骤(4)初始化缺陷定位模型;
[0010] 步骤(5)利用当前缺陷定位模型,提取训练集合缺陷报告和源代码的统一特征;
[0011] 步骤(6)利用提取的统一特征,计算当前模型的缺陷定位训练误差;
[0012] 步骤(7)若当前模型的训练误差低于预设阈值,模型训练完成,转入步骤(9),否则转入步骤(8);
[0013] 步骤(8)更新缺陷定位模型权重参数,转入步骤(5)继续训练模型;
[0014] 步骤(9)利用缺陷定位模型,提取待检查的缺陷报告和源代码统一特征;
[0015] 步骤(10)利用统一特征定位包含缺陷的源代码模块;
[0016] 步骤(11)输出定位到的缺陷源代码模块,将缺陷情况反馈给模块开发者;
[0017] 步骤(12)若还有缺陷报告尚未检查,转步骤(1),否则缺陷定位过程结束。
[0018] 有益效果:现有的软件缺陷自动定位技术存在以下主要问题:
[0019] (1)没有考虑软件源代码和缺陷报告的文本特征区别。软件源代码由程序语言组成而缺陷报告由自然语言组成,两种语言的结构和特征存在结构和特征差异,因此直接使用基于自然语言的特征处理方法对源代码进行特征提取,会丢失一定的语义特征,从而造成软件缺陷定位结果较差。
[0020] (2)没有利用历史软件代码和缺陷信息训练模型。现有的缺陷定位模型,对新的进行特征提取,接着在对应的源代码中,利用进行关键词的相似性匹配,匹配找到的相似源代码为潜在的缺陷源代码。这种方式没有利用历史的软件代码和缺陷信息进行模型训练和构建过程,因此定位结果不好。
[0021] 与现有技术相比,本发明提供的基于缺陷报告分析的缺陷源代码定位方法,能够在提取缺陷报告的文本信息同时,提取源代码的程序结构语义,学习统一的特征帮助提高定位缺陷源代码精度。同时该模型是基于历史的缺陷代码和报告信息进行训练构建而成,随后对新的缺陷报告进行特征提取和缺陷模块定位,提高开发人员检测效率。附图说明
[0022] 图1为基于自动化软件质量辅助维护装置的软件缺陷定位过程图;
[0023] 图2为本发明实施例的软件缺陷自动定位器工作流程图
[0024] 图3为本发明实施例的缺陷报告和源代码统一特征提取流程图;
[0025] 图4为本发明实施例的缺陷定位模型生成建模图。

具体实施方式

[0026] 下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0027] 基于自动化软件质量辅助维护装置的软件缺陷定位过程图如图1所示。在软件发布后,用户会通过提交缺陷报告反馈软件运行中的故障信息。软件质量维护人员在接收并检查了缺陷报告内容后,将所有源代码模块提交自动软件质量辅助维护装置进行处理,并输出所有定位的潜在缺陷源代码模块,交由软件开发人员进行检查和修改。若尚有新的缺陷报告未处理,则继续根据报告内容定位缺陷源代码并坚持,直至没有未处理的缺陷报告,最后对外发布更新版本的软件。
[0028] 软件质量维护装置的核心内容是根据缺陷报告的自动化缺陷定位功能,本实施例的缺陷源代码定位转置工作流程如图2所示。本实施例的软件缺陷定位器充分利用历史缺陷报告和定位数据,通过学习自然语言和程序语言的统一特征辅助缺陷定位缺陷源代码,从而提升模型的定位性能。
[0029] 步骤(0)是起始动作;
[0030] 步骤(1)获得新的待检查缺陷报告;
[0031] 步骤(2)是否已存在训练完成的缺陷定位模型,如果不存在,转入步骤(3),如果存在,转入步骤(9);
[0032] 步骤(3)获取大量历史缺陷报告、源代码和缺陷定位标记,构造训练集合;
[0033] 步骤(4)初始化缺陷定位模型;这里初始化时给模型随机初始化一个参数,该参数在后续学习过程中将会被不断更新;
[0034] 步骤(5)利用当前模型,提取训练集合缺陷报告和源代码的统一特征;统一特征是能够表示自然语言和程序语言的统一性质的一组向量;
[0035] 步骤(6)利用提取的统一特征,计算当前模型的缺陷定位训练误差;
[0036] 步骤(7)若当前模型的训练误差低于预设阈值,模型训练完成,转入步骤(9),否则转入步骤(8);
[0037] 步骤(8)更新缺陷定位模型权重参数,转入步骤(5)继续训练模型;
[0038] 步骤(9)利用缺陷定位模型,提取待检查的缺陷报告和源代码统一特征;
[0039] 步骤(10)利用统一特征定位包含缺陷的源代码模块;
[0040] 步骤(11)输出定位到的缺陷源代码模块,将缺陷情况反馈给模块开发者;
[0041] 步骤(12)若还有缺陷报告尚未检查,转步骤(1),否则缺陷定位过程结束。
[0042] 本发明实施例的缺陷报告和源代码统一特征提取流程图如图3所示。在接受到新的缺陷报告后,本发明首先利用基于自然语言的卷积神经网络模型提取缺陷报告的中层特征,同时利用基于程序语言的卷积神经网络提取对应源代码的中层特征,之后利用深层卷积网络融合两种中层特征,最终得到进行缺陷定位的统一特征。具体实施过程将会详细说明。
[0043] 本发明实施例的缺陷定位模型的生成建模图如图4所示。首先从历史数据库中获得源代码和缺陷报告以及相应的标记信息,构造训练数据。初始化训练模型,利用当前模型提取缺陷报告和源代码的统一特征,利用统一特征进行缺陷定位并计算训练误差,当模型的训练误差大于预先定义的阈值时,更新模型继续训练。直到训练误差小于预定阈值时,训练完成,得到基于统一特征学习的缺陷定位模型。
[0044] 本发明采用卷积神经网络作为软件缺陷检测的模型,分别构造基于自然语言的卷积神经网络提取缺陷报告特征和基于程序语言的网络提取源代码特征,然后采用全连接网络结构融合得到统一特征后进行软件缺陷源代码定位。
[0045] 本模型首先把缺陷报告和程序代码转换成向量形式作为程序语言的卷积神经网络的输入。缺陷报告和源代码中每个词可以由一位有效编码(one-hot)形式表示,假如词汇库的大小为k,那么每个词可以表示成1个k维的向量,只有1位是1其他所有位均为0。一条有n个词的语句可以表示为Xn×k形式。
[0046] 程序语言的卷积神经网络的具体结构如下:模型的输入是表示程序语句的特征矩阵,首先第一层采用若干滤波器组成的卷积层对矩阵进行卷积操作提取特征。本发明中的滤波器对连续的d个词做卷积操作,生成新的特征表示,如式(1)所示。其中,d是人工预设参数,表示卷积窗口的大小,σ是非线性激活函数(如式(2)所示),w和b是滤波器参数,xi:i+d-1表示从语句的第i位开始,连续d个单词的向量。通过对xi:i+d-1进行卷积操作,模型生成一个新的特征zi。随后,卷积窗口沿着语句方向滑动,步长为1个词,每移动一步,卷积生成1个新的特征。当窗口划动到一条语句结束时停止滑动,因此滤波器将单词个数为n的语句转换为新的特征向量 该特征包含了语句的高层语义。本模型对所有语句进行类似的卷积操作。随后的池化层采用最大值池化方法 提取最有信息的特征表示该行语句。假设滤波器数量为m,第一层卷积和池化层后,第i条源代码转换为矩阵为第i条源代码语句数。可以看出,第一层卷积操作,滤波器在语句内滑动提取新的特征,因此模型得到的新的特征向量反映了代码语句内部的信息。
[0047] zi=σ(w·xi:i+d-1+b)  (1)
[0048] σ(t)=max(t,0)  (2)
[0049] 第二层的卷积和池化层结构与第一层类似。唯一的区别是窗口大小d设为不同数值(d=2,3,4,5),表示提取相邻d行语句的结构特征。在第二层卷积和池化层操作后,模型生成了程序语言的中间特征
[0050] 基于自然语言的卷积神经网络与程序语言神经网络结构类似,用来提取缺陷报告的文本特征信息。由于自然语言文本中没有语句结构,以一个单词作为基本单位,因此在卷积过程中,滤波器的窗口直接在整个文本划动进行卷积操作提取特征,最终生成缺陷报告的中间特征
[0051] 得到表示缺陷报告和源代码的中间特征后,本模型采用全连接网络融合中间特征,并利用随机梯度下降方法(Stochastic Gradient Descent)优化(3)式中的目标函数更新模型参数w,其中costn表示定位到无关代码的代价,costp是未成功定位一个相关缺陷代码的代价,costn,costp和λ是人工预设参数,函数 为平方损失损失函数(Square Loss Function),yi,j为对于缺陷报告ri和源代码cj的缺陷定位情况标注,yi,j=+1表示代码cj是缺陷报告ri相关的缺陷代码,yi,j=-1表示代码cj不是缺陷报告ri相关缺陷代码。本模型利用反向传播网络,每次迭代过程把误差信号沿着网络结构反向传回,并对网络权重进行更新,以减小训练误差。当训练误差 小于预先设定的阈值θ时,停止更新网络,缺陷定位网络学习完成。
[0052]
相关专利内容
标题 发布/更新时间 阅读量
缺陷检查装置 2020-05-12 291
缺陷检测方法 2020-05-12 225
缺陷检查系统 2020-05-13 88
潜在缺陷识别 2020-05-13 240
缺陷平面化 2020-05-11 367
缺陷知识库 2020-05-11 677
缺陷分析法 2020-05-11 600
缺陷检测装置 2020-05-12 935
缺陷检测方法 2020-05-13 259
缺陷分析仪 2020-05-11 426
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈