缺陷定位方法、装置和电子设备及计算机可读存储介质与流程

专利2022-06-29  85


本申请涉及软件开发技术领域,具体而言,本申请涉及一种缺陷定位方法、装置和电子设备及计算机可读存储介质。



背景技术:

软件缺陷定位是在代码执行失败时,确定缺陷所在具体位置的一种分析方法。在传统的软件开发过程中,通常是由开发人员手工调试、找到缺陷并进行修复,但这种传统的缺陷定位方法成本较高,效率较低。目前多通过自动化缺陷定位方法来进行缺陷定位,自动化缺陷定位主要包括动态定位以及静态定位。

静态定位是通过分析代码结构来定位缺陷,在静态定位的处理过程中,多会使用到隐含狄利克雷分布(latentdirichletallocation,lda)主题模型对数据进行分析,lda主题模型中需要人工设定聚类数目,即需要人工设定提取出的主题数目,在实际使用中可能需要多次调整聚类数目,而当聚类数目调整时,就需要重新构建lda主题模型,这可能会耗费大量时间,不利于用于的实际使用。



技术实现要素:

本申请的目的旨在至少能解决上述的技术缺陷之一。本申请所采用的技术方案如下:

第一方面,本申请实施例提供了一种缺陷定位方法,该方法包括:

获取待检测代码文件,以及待检测代码文件所对应的缺陷报告;

基于缺陷报告中的文本信息,确定第一词向量集合;

基于分层狄利克雷过程(hierarchicaldirichletprocess,hdp)模型对第一词向量集合进行处理,确定第一词向量集合中的主题向量;

基于主题向量对待检测代码文件进行缺陷定位。

可选地,基于主题向量对待检测代码文件进行缺陷定位,包括:

基于待检测代码文件确定第二词向量集合;

基于第二词向量集合中的目标向量,对待检测代码文件进行缺陷定位,目标向量与主题向量的相似度满足预设条件。

可选地,基于待检测代码文件确定第二词向量集合,包括:

构建待检测代码文件的抽象语法树;

提取抽象语法树中的目标词;

基于目标词,确定第二词向量集合。

可选地,目标词包括以下至少一项:

类名;

方法名;

变量名。

可选地,基于缺陷报告中的文本信息,确定第一词向量集合,包括:

基于缺陷报告中的缺陷描述信息,确定第一词向量集合。

可选地,基于缺陷报告中的缺陷描述信息,确定第一词向量集合,包括:

对缺陷描述信息进行断句,得到断句结果

对断句处理结果进行分词,得到分词结果;

对分词结果进行向量化处理,得到第一词向量集合。

第二方面,本申请实施例提供了一种缺陷定位装置,该装置包括:

数据获取模块,用于获取待检测代码文件,以及待检测代码文件所对应的缺陷报告;

词向量确定模块,用于基于缺陷报告中的文本信息,确定第一词向量集合;

主题向量确定模块,用于基于hdp模型对第一词向量集合进行处理,确定第一词向量集合中的主题向量;

缺陷定位模块,用于基于主题向量对待检测代码文件进行缺陷定位。

可选地,缺陷定位模块具体用于:

基于待检测代码文件确定第二词向量集合;

基于第二词向量集合中的目标向量,对待检测代码文件进行缺陷定位,目标向量与主题向量的相似度满足预设条件。

可选地,缺陷定位模在基于待检测代码文件确定第二词向量集合时,具体用于:

构建待检测代码文件的抽象语法树;

提取抽象语法树中的目标词;

基于目标词,确定第二词向量集合。

可选地,目标词包括以下至少一项:

类名;

方法名;

变量名。

可选地,词向量确定模块具体用于:

基于缺陷报告中的缺陷描述信息,确定第一词向量集合。

可选地,词向量确定模块在基于缺陷报告中的缺陷描述信息,确定第一词向量集合时,具体用于:

对缺陷描述信息进行断句,得到断句结果

对断句处理结果进行分词,得到分词结果;

对分词结果进行向量化处理,得到第一词向量集合。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器和存储器;

存储器,用于存储操作指令;

处理器,用于通过调用操作指令,执行如本申请的第一方面的任一实施方式中所示的缺陷定位方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请的第一方面的任一实施方式中所示的缺陷定位方法。

本申请实施例提供的技术方案带来的有益效果是:

本申请实施提供的方案,通过获取待检测代码文件以及相应的缺陷报告作为原始数据,基于缺陷报告中的文本信息,确定缺陷报告的词向量集合,并基于hdp模型对词向量集合进行处理,确定第一词向量集合中的主题向量,进而基于主题向量对待检测代码文件进行缺陷定位。本方案中,由于是通过hdp模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建lda主题模型的过程,减少了时间的耗费,便于用户的使用。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本申请实施例提供的一种缺陷定位方法的流程示意图;

图2为本申请实施例提供的一种缺陷定位装置的结构示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图1示出了本申请实施例提供的一种缺陷定位方法的流程示意图,如图1所示,该方法主要可以包括:

步骤s110:获取待检测代码文件,以及待检测代码文件所对应的缺陷报告。

本申请实施例中,在对待检测代码文件进行缺陷定位时,可以获取待检测代码文件以及相应的缺陷报告作为原始数据,基于对缺陷报告的分析实现对对待检测代码文件中缺陷的静态定位。

步骤s120:基于缺陷报告中的文本信息,确定第一词向量集合。

本申请实施例中,缺陷报告是开发人员在发现缺陷时填写的,缺陷报告中的文本信息能够反映缺陷的具体情况,因此可以对每个缺陷报告中的文本信息进行特征提取,生成相应的词向量,原始数据中所有缺陷报告的词向量构成第一词向量集合。

步骤s130:基于hdp模型对第一词向量集合进行处理,确定第一词向量集合中的主题向量。

本申请实施例中,可以针对第一词向量集合来构建hdp模型,确定出缺陷报告中主题的概率分布,从而可以确定第一词向量集合中的主题向量,提取出的主题向量可以用于表征缺陷报告中所反映的缺陷。

现有技术中,一般是采用lda主题模型来进行主题向量的提取,但是使用lda主题模型对于不同的数据进行处理时,需要多次对聚类数目(即主题向量的数量)进行调整,以获取更好的主题向量提取结果,而在聚类数目发生改变时,需要重新构建lda主题模型,较为不便且浪费大量时间。

本申请实施例中,由于hdp模型中的聚类数目不是人为指定的,而是在聚类过程中根据实际情况自动生成的,因此在通过缺陷报告的第一词向量集合来构建hdp模型时,即使用作原始数据的缺陷报告发生改变,也无需重新指定聚类数目,也就无需重新构建模型,因此,本申请实施例中通过lda主题模型来进行主题向量的提取,相对于通过lda主题模型来进行主题向量的提取,避免了重复构建lda主题模型的过程,减少了时间的浪费。

步骤s140:基于主题向量对待检测代码文件进行缺陷定位。

本申请实施例中,由于确定出的主题向量能够表征缺陷报告中所反映的缺陷,因此可以基于主题向量确定代码文件中的缺陷,实现缺陷定位。

本申请实施提供的方法,通过获取待检测代码文件以及相应的缺陷报告作为原始数据,基于缺陷报告中的文本信息,确定缺陷报告的词向量集合,基于hdp模型对词向量集合进行处理,确定第一词向量集合中的主题向量,进而基于主题向量对待检测代码文件进行缺陷定位。本方案中,由于是通过hdp模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建lda主题模型的过程,减少了时间的耗费,便于用户的使用。

本申请实施例的一种可选方式中,基于主题向量对待检测代码文件进行缺陷定位,包括:

基于待检测代码文件确定第二词向量集合;

基于第二词向量集合中的目标向量,对待检测代码文件进行缺陷定位,目标向量与主题向量的相似度满足预设条件。

本申请实施例中,可以分别对各待检测代码文件进行特征提取,生成相应的词向量,原始数据中所有待检测代码文件的词向量构成的第二词向量集合。

本申请实施例中,主题向量可以表征缺陷保证中存在的缺陷,当第二词向量集合中的某个词向量与主题向量的相似度足够高时,可以将该词向量指定为目标向量,并认为目标向量对应的代码文件存在缺陷,从而实现在所有的代码文件中确定存在缺陷的代码文件,即实现缺陷定位。

在实际使用中,可以通过指定预设条件来确定目标向量,作为一个示例,预设条件可以为:在第二词向量集合中的所有向量中,目标向量与主题向量的相似度最高。可以通过js(jensen-shannon)距离公式计算目标向量主题向量的相似度。

本申请实施例的一种可选方式中,基于待检测代码文件确定第二词向量集合,包括:

构建待检测代码文件的抽象语法树;

提取抽象语法树中的目标词;

基于目标词,确定第二词向量集合。

本申请实施例中,在生成待检测代码文件对应的词向量时,根据编程语言类型的不同,可以分别做相对应的处理。如对于面向对象编程语言,如java,由于其代码结构都是以类的形式,类中包含一些方法和变量等,因此可以构建抽象语法树来描述代码的这一结构,构建抽象语法树中的目标词能够用于代码文件进行表征,因此可以通过对目标词进行特征提取,确定第二词向量集合。

具体而言,目标词可以包括但是不限于抽象语法树中的类名、方法名以及变量名。

本申请实施例的一种可选方式中,基于缺陷报告中的文本信息,确定第一词向量集合,包括:

基于缺陷报告中的缺陷描述信息,确定第一词向量集合。

本申请实施例,缺陷报告的文本信息中,缺陷描述信息是用于对缺陷进行具体描述的,因此通过对缺陷描述信息的进行特征提取生成的第一词向量集合,能够表征缺陷报告中所反映的缺陷。

具体而言,缺陷描述信息可以包括但是不限于缺陷报告中缺陷摘要一栏中对应的文本信息,或者缺陷描述一栏中对应的文本信息。

本申请实施例的一种可选方式中,基于缺陷报告中的缺陷描述信息,确定第一词向量集合,包括:

对缺陷描述信息进行断句,得到断句结果

对断句处理结果进行分词,得到分词结果;

对分词结果进行向量化处理,得到第一词向量集合。

本申请实施例中,缺陷描述信息可能为整句,可以对缺陷描述信息进行断句,得到的断句结果,再对断句结果进行分词,得到分词结果。将得到的分词结果进行降噪、去重等预处理后,可以基于词向量模型生成词向量。

在实际使用中,可以将已经解决的缺陷报告以及相应代码文件作为训练数据集,来进行hdp模型的训练,缺陷报告中提交日志的文件名和对应的代码文件可以作为真值集。可以通过计算平均准确率(meanaverageprecision,map)值以及平均排序倒数(meanreciprocalrank,mrr)值来判断训练得到模型的优劣。

基于与图1中所示的方法相同的原理,图2示出了本申请实施例提供的一种缺陷定位装置的结构示意图,如图2所示,该缺陷定位装置20可以包括:

数据获取模块210,用于获取待检测代码文件,以及待检测代码文件所对应的缺陷报告;

词向量确定模块220,用于基于缺陷报告中的文本信息,确定第一词向量集合;

主题向量确定模块230,用于基于hdp模型对第一词向量集合进行处理,确定第一词向量集合中的主题向量;

缺陷定位模240,用于基于主题向量对待检测代码文件进行缺陷定位。

本申请实施提供的装置,通过获取待检测代码文件以及相应的缺陷报告作为原始数据,基于缺陷报告中的文本信息,确定缺陷报告的词向量集合,基于hdp模型对词向量集合进行处理,确定第一词向量集合中的主题向量,进而基于主题向量对待检测代码文件进行缺陷定位。本方案中,由于是通过hdp模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建lda主题模型的过程,减少了时间的耗费,便于用户的使用。

可选地,缺陷定位模块具体用于:

基于待检测代码文件确定第二词向量集合;

基于第二词向量集合中的目标向量,对待检测代码文件进行缺陷定位,目标向量与主题向量的相似度满足预设条件。

可选地,缺陷定位模在基于待检测代码文件确定第二词向量集合时,具体用于:

构建待检测代码文件的抽象语法树;

提取抽象语法树中的目标词;

基于目标词,确定第二词向量集合。

可选地,目标词包括以下至少一项:

类名;

方法名;

变量名。

可选地,词向量确定模块具体用于:

基于缺陷报告中的缺陷描述信息,确定第一词向量集合。

可选地,词向量确定模块在基于缺陷报告中的缺陷描述信息,确定第一词向量集合时,具体用于:

对缺陷描述信息进行断句,得到断句结果

对断句处理结果进行分词,得到分词结果;

对分词结果进行向量化处理,得到第一词向量集合。

可以理解的是,本实施例中的缺陷定位装置的上述各模块具有实现图1中所示的实施例中的缺陷定位方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述缺陷定位装置的各模块的功能描述具体可以参见图1中所示实施例中的缺陷定位方法的对应描述,在此不再赘述。

本申请实施例提供了一种电子设备,包括处理器和存储器;

存储器,用于存储操作指令;

处理器,用于通过调用操作指令,执行本申请任一实施方式中所提供的缺陷定位方法。

作为一个示例,图3示出了本申请实施例所适用的一种电子设备的结构示意图,如图3所示,该电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选的,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。

其中,处理器2001应用于本申请实施例中,用于实现上述方法实施例所示的方法。收发器2004可以包括接收机和发射机,收发器2004应用于本申请实施例中,用于执行时实现本申请实施例的电子设备与其他设备通信的功能。

处理器2001可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器2003可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

可选的,存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现本申请任一实施方式中所提供的缺陷定位方法。

本申请实施例提供的电子设备,适用于上述方法任一实施例,在此不再赘述。

本申请实施例提供了一种电子设备,与现有技术相比,通过获取待检测代码文件以及相应的缺陷报告作为原始数据,基于缺陷报告中的文本信息,确定缺陷报告的词向量集合,基于hdp模型对词向量集合进行处理,确定第一词向量集合中的主题向量,进而基于主题向量对待检测代码文件进行缺陷定位。本方案中,由于是通过hdp模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建lda主题模型的过程,减少了时间的耗费,便于用户的使用。。

本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的缺陷定位方法。

本申请实施例提供的计算机可读存储介质,适用于上述方法任一实施例,在此不再赘述。

本申请实施例提供了一种计算机可读存储介质,与现有技术相比,通过获取待检测代码文件以及相应的缺陷报告作为原始数据,基于缺陷报告中的文本信息,确定缺陷报告的词向量集合,基于hdp模型对词向量集合进行处理,确定第一词向量集合中的主题向量,进而基于主题向量对待检测代码文件进行缺陷定位。本方案中,由于是通过hdp模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建lda主题模型的过程,减少了时间的耗费,便于用户的使用。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。


技术特征:

1.一种缺陷定位方法,其特征在于,包括:

获取待检测代码文件,以及所述待检测代码文件所对应的缺陷报告;

基于所述缺陷报告中的文本信息,确定第一词向量集合;

基于分层狄利克雷过程hdp模型对所述第一词向量集合进行处理,确定所述第一词向量集合中的主题向量;

基于所述主题向量对所述待检测代码文件进行缺陷定位。

2.根据权利要求1所述的方法,其特征在于,所述基于所述主题向量对所述待检测代码文件进行缺陷定位,包括:

基于所述待检测代码文件确定第二词向量集合;

基于所述第二词向量集合中的目标向量,对所述待检测代码文件进行缺陷定位,所述目标向量与所述主题向量的相似度满足预设条件。

3.根据权利要求2所述的方法,其特征在于,所述基于所述待检测代码文件确定第二词向量集合,包括:

构建所述待检测代码文件的抽象语法树;

提取所述抽象语法树中的目标词;

基于所述目标词,确定第二词向量集合。

4.根据权利要求3所述的方法,其特征在于,所述目标词包括以下至少一项:

类名;

方法名;

变量名。

5.根据权利要求1所述的方法,其特征在于,所述基于所述缺陷报告中的文本信息,确定第一词向量集合,包括:

基于所述缺陷报告中的缺陷描述信息,确定第一词向量集合。

6.根据权利要求5所述的方法,其特征在于,所述基于所述缺陷报告中的缺陷描述信息,确定第一词向量集合,包括:

对所述缺陷描述信息进行断句,得到断句结果

对所述断句处理结果进行分词,得到分词结果;

对所述分词结果进行向量化处理,得到第一词向量集合。

7.一种缺陷定位装置,其特征在于,包括:

数据获取模块,用于获取待检测代码文件,以及所述待检测代码文件所对应的缺陷报告;

词向量确定模块,用于基于所述缺陷报告中的文本信息,确定第一词向量集合;

主题向量确定模块,用于基于hdp模型对所述第一词向量集合进行处理,确定所述第一词向量集合中的主题向量;

缺陷定位模块,用于基于所述主题向量对所述待检测代码文件进行缺陷定位。

8.根据权利要求7所述的装置,其特征在于,所述缺陷定位模块具体用于:

基于所述待检测代码文件确定第二词向量集合;

基于所述第二词向量集合中的目标向量,对所述待检测代码文件进行缺陷定位,所述目标向量与所述主题向量的相似度满足预设条件。

9.一种电子设备,其特征在于,包括处理器和存储器;

所述存储器,用于存储操作指令;

所述处理器,用于通过调用所述操作指令,执行权利要求1-6中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。

技术总结
本申请实施例提供了一种缺陷定位方法、装置和电子设备及计算机可读存储介质,该方法包括:获取待检测代码文件,以及待检测代码文件所对应的缺陷报告;基于缺陷报告中的文本信息,确定第一词向量集合;基于分层狄利克雷过程HDP模型对第一词向量集合进行处理,确定第一词向量集合中的主题向量;基于主题向量对待检测代码文件进行缺陷定位。本申请实施例提供的方案中,由于是通过HDP模型在缺陷报告的词向量集合中进行主题提取,在聚类过程中可以根据实际情况自动确定主题数目,无需人工设定主题数目,也就避免了因调整主题数目导致的重复构建LDA主题模型的过程,减少了时间的耗费,便于用户的使用。

技术研发人员:刘逸男;陈小伟;张一寰;李斌
受保护的技术使用者:中信银行股份有限公司
技术研发日:2020.01.19
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-26406.html

最新回复(0)