CN114416524B - 文件错误的定位方法及装置 - Google Patents
文件错误的定位方法及装置 Download PDFInfo
- Publication number
- CN114416524B CN114416524B CN202111532589.6A CN202111532589A CN114416524B CN 114416524 B CN114416524 B CN 114416524B CN 202111532589 A CN202111532589 A CN 202111532589A CN 114416524 B CN114416524 B CN 114416524B
- Authority
- CN
- China
- Prior art keywords
- file
- model
- function
- source
- determining
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种文件错误的定位方法、装置、终端设备和存储介质,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种文件错误的定位方法、装置、终端设备和存储介质。
背景技术
bug是指一个错误,缺陷或者故障,其产生了错误的结果或者期望之外的结果。尽管使用了不同的软件质量控制过程,如软件测试和软件检查,但软件规模的增加和有限的开发资源使得开发人员在发布软件的同时仍然包含缺陷。
为了解决这个问题,很多大型软件项目建立了bug跟踪***,有效地跟踪产品中的bug,然后要求世界各地的用户报告他们遇到的bug。在软件产品的开发和发布后生命周期中,错误报告的数量可能会越来越多,很容易变得难以处理。例如,A平台产品有3389个bug报告,而该项目平均每天收到300个新的bug报告。及时的bug修复对于软件***的可用性和安全性至关重要,而定位和修复bug要开发人员花费大量的时间和精力。这些数字表明,仅仅依靠手工工作已无法满足日益增长的需求,而且手工进行测试效率较低。
发明内容
本发明意在提供一种文件错误的定位方法、装置、终端设备和存储介质,以解决现有技术中存在的不足,本发明要解决的技术问题通过以下技术方案来实现。
第一个方面,本发明实施例提供一种文件错误的定位方法,所述方法包括:
获取待定位的多个测试报告文件;
根据预先建立的错误检索模型,确定与所述测试报告文件对应的多个第一源文件;
对所述第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
根据预先建立的定位模型,确定所述测试报告文件和所述第二源文件之间函数级语义交互特征;
采用预先建立的融合模块,对所述语义交互特征进行聚合,通过对多个所述第二源文件进行排序,确定与所述测试报告文件对应的目标源文件。
可选地,所述预先建立的错误检索模型通过如下方式得到:
获取预设数量的不相关源文件的第一样本数据;
根据所述第一样本数据,对预设模型进行训练,得到训练结果;
在所述训练结果满足如下函数的情况下,确定第一损失函数;
其中:fixes(r)是预设错误报告的相关修复源文件集合,Φi(r,s)是错误报告和源文件的第i个特征;
当所述损失函数小于预设值时,将所述预设模型确定为所述错误检索模型。
可选地,所述预设模型至少包括AdaBoost树分类器、极端随机树分类器和梯度提升回归模型中的一种。
可选地,所述第一损失函数通过普通最小二乘法,并结合正则化项来确定的,其中,所述正则化项至少包括无正则化或弹性网络。
可选地,所述预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,所述第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据所述第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,所述损失函数为交叉熵损失函数;其中,所述第二损失函数为:
其中:p=[p1,p2,..,pC],每一个元素pi表示该样本属于第i类的概率;y=[y1,y2,..,yC]是样本标签的one-hot表示,即当样本属于第i类时,yi=1,否则yi=0,C是类别总数。
可选地,所述采用预先建立的融合模块,对所述语义交互特征进行聚合,包括:
采用训练好的CodeBERT语言模型,确定待测试报告和所述第二源文件之间函数级语义交互特征;
采用最大值算法和平均值算法对所述函数级语义交互特征进行聚合,得到聚合后的特征向量。
可选地,所述方法还包括:
采用学习排序learning-to-rank的方式对所述聚合后的特征向量进行排序,得到排序后的结果;
根据所述排序后的结果,对多个所述第二源文件进行排序。
第二个方面,本发明实施例提供一种文件错误的定位装置,所述装置包括:
获取模块,用于获取待定位的多个测试报告文件;
确定模块,用于根据预先建立的错误检索模型,确定与所述测试报告文件对应的多个第一源文件;
拆分模块,用于对所述第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
定位模块,用于根据预先建立的定位模型,确定所述测试报告文件和所述第二源文件之间函数级语义交互特征;
聚合模块,用于采用预先建立的融合模块,对所述语义交互特征进行聚合,通过对多个所述第二源文件进行排序,确定与所述测试报告文件对应的目标源文件。
可选地,所述装置还包括模型建立模块,所述模型建立模块用于:
获取预设数量的不相关源文件的第一样本数据;
根据所述第一样本数据,对预设模型进行训练,得到训练结果;
在所述训练结果满足如下函数的情况下,确定第一损失函数;
其中:fixes(r)是预设错误报告的相关修复源文件集合,Φi(r,s)是错误报告和源文件的第i个特征;
当所述损失函数小于预设值时,将所述预设模型确定为所述错误检索模型。
可选地,所述预设模型至少包括AdaBoost树分类器、极端随机树分类器和梯度提升回归模型中的一种。
可选地,所述第一损失函数通过普通最小二乘法并结合正则化项来确定的,其中,所述正则化项至少包括无正则化或弹性网络。
可选地,所述预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,所述第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据所述第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,所述损失函数为交叉熵损失函数;其中,所述第二损失函数为:
其中:p=[p1,p2,..,pC],每一个元素pi表示该样本属于第i类的概率;y=[y1,y2,..,yC]是样本标签的one-hot表示,即当样本属于第i类时,yi=1,否则yi=0,C是类别总数。
可选地,所述采用预先建立的融合模块,对所述语义交互特征进行聚合,包括:
采用训练好的CodeBERT语言模型,确定待测试报告和所述第二源文件之间函数级语义交互特征;
采用最大值算法和平均值算法对所述函数级语义交互特征进行聚合,得到聚合后的特征向量。
可选地,所述聚合模块还用于:
采用学习排序learning-to-rank的方式对所述聚合后的特征向量进行排序,得到排序后的结果;
根据所述排序后的结果,对多个所述第二源文件进行排序。
第三个方面,本发明实施例提供一种终端设备,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现第一个方面提供的文件错误的定位方法。
第四个方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第一个方面提供的文件错误的定位方法。
本发明实施例包括以下优点:
本发明实施例提供的文件错误的定位方法、装置、终端设备和存储介质,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
附图说明
图1是本发明的一种文件错误的定位方法实施例的步骤流程图;
图2是本发明的又一种文件错误的定位方法实施例的步骤流程图;
图3是本发明的再一种文件错误的定位方法实施例的步骤流程图;
图4是本发明的语言模型训练流程图;
图5是本发明的特征融合模型训练流程图;
图6是本发明的一种文件错误的定位装置实施例的结构框图;
图7是本发明的一种终端设备的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明一实施例提供一种文件错误的定位方法,用于对错误报告对应的源文件进行定位。本实施例的执行主体为文件错误的定位装置,设置在终端设备上,该终端设备可以是计算机、平板和手机等。
参照图1,示出了本发明的一种文件错误的定位方法实施例的步骤流程图,该方法具体可以包括如下步骤:
S101、获取待定位的多个测试报告文件;
具体地,在一个项目进行在最后时刻,需要对编写的源程序代码进行测试,得到测试报告文件,在该测试报告文件中可能会出现错误结果,即bug,对于如何根据该bug在源程序代码中定位到对应的位置,然后对源程序代码进行修改,减少bug的出现,对于此,本发明实施例提供了一种文件错误的定位方法,终端设备获取待定位的多个测试报告文件。
S102、根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;
具体地,利用专家知识和经验探索bug报告和源文件之间的联系,总结并产生一些词法特征的计算方式,如表1所示,利用人工构造的词法特征训练一个信息检索模型选择出TOP-K的候选源文件即第一源文件;
S103、对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
S104、根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;
具体地,将源文件按照函数级别进行拆分,其中,预先建立的定位模型即为训练好的CodeBERT语言模型;通过该定位模型,计算bug报告即测试报告文件和第二源文件之间函数级语义交互特征。
S105、采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件。
具体地,采用训练好的CodeBERT语言模型,确定待测试报告和第二源文件之间函数级语义交互特征;采用特征聚合模块即最大值算法和平均值算法对函数级语义交互特征进行聚合,再采用learning-to-rank方法融合聚合后的函数级语义交互特征和文本特征来计算bug报告和源文件之间的相似性,从而对TOP-K第二源文件进行精确排序。
本发明提出了构建函数级别的bug定位数据集来训练CodeBERT语言模型,使用该语言模型在函数级提取程序语义信息,然后利用learning-to-rank方法融合聚合后的函数级语义交互特征和文本特征来计算bug报告和源文件之间的相似性。本发明将源文件分解为函数,推断bug报告和函数之间的关系,因此能够利用源代码文件中更为细致完整的语义信息,并避免了处理过长的信息,有助于提升bug定位的准确率。
本发明实施例提供的文件错误的定位方法,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
本发明又一实施例对上述实施例提供的文件错误的定位方法做进一步补充说明。
可选地,预先建立的错误检索模型通过如下方式得到:
获取预设数量的不相关源文件的第一样本数据;
根据第一样本数据,对预设模型进行训练,得到训练结果;
在训练结果满足如下函数的情况下,确定第一损失函数;
其中:fixes(r)是预设错误报告的相关修复源文件集合,Φi(r,s)是错误报告和源文件的第i个特征;
当损失函数小于预设值时,将预设模型确定为错误检索模型。
可选地,预设模型至少包括AdaBoost树分类器、极端随机树分类器和梯度提升回归模型中的一种。
可选地,第一损失函数通过普通最小二乘法,Huber,epsilon insensitive或squared epsilon insensitive,并结合正则化项来确定的,其中,正则化项至少包括无正则化或弹性网络。
可选地,预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,损失函数为交叉熵损失函数;其中,第二损失函数为:
其中:p=[p1,p2,..,pC],每一个元素pi表示该样本属于第i类的概率;y=[y1,y2,..,yC]是样本标签的one-hot表示,即当样本属于第i类时,yi=1,否则yi=0,C是类别总数。
可选地,方法还包括:
采用学习排序learning-to-rank的方式融合词法特征和语义特征对多个第二源文件进行排序。
具体的,learning-to-rank算法包括:首先平衡训练数据集,然后设置训练目标函数,最后进行learning-to-rank模型训练,利用训练好的模型检索出TOP-K的候选源文件,即对第二源文件进行排序。
图2是本发明的又一种文件错误的定位的步骤流程图,如图2所示,具体的,
S1、计算词法特征;
bug报告和源文件之间的词法特征按照以下表1中的公式计算得出。其中r代表bug报告,s代表源代码,m代表源代码s中每个函数。
表1
S2、训练信息检索模型;
为了缓解数据不平衡问题,首先使用TOP-200的不相关源文件作为负样本,并使用如下函数作为训练目标:
其中:fixes(r)是给定bug报告的相关修复源文件集合,Φi(r,s)是bug报告和源文件的第i个特征。
模型使用AdaBoost树分类器、极端随机树分类器和梯度提升回归模型,结合以下损失函数:普通最小二乘法,Huber,epsilon insensitive和squared epsiloninsensitive,并结合以下正则化项:无正则化、L1、L2或弹性网络,最终会选择效果最好的匹配策略。
S3、构造函数级bug定位数据集;
为了获得足够的函数级别bug定位数据集,本发明实施例采用一种粗粒度的数据构造方法。构建的数据集主要包括两部分,一部分是CodeSearchNet数据集,另一部分是为每个项目构建的。其中,CodeSearchNet语言数据集是由函数体(PL)和函数注释(NL)组成。在构造目标项目的数据时,因为无法得知具体是哪些函数导致了bug的产生,这需要大量的专家知识去分析项目才能知道。一般情况下函数越复杂越容易产生bug,因此选择源文件中的长度排名前TOP-K的函数当做导致bug的函数,由此得到的bug报告和函数(function)二元组标记为正样本。
S4、训练适合bug定位的CodeBERT语言模型;
接下来使用步骤S3构造的数据集训练CodeBERT语言模型。在输入序列前添加一个[CLS]标记符,在输入序列末尾添加一个[SEP]标记符。[CLS]的含义是表示整个序列的语义信息。[SEP]是表示序列结束的唯一分隔符。
将第一个输入标记符([CLS])对应的最终隐藏状态向量输入到距离计算函数中,如余弦相似度或曼哈顿距离,来计算函数体和函数注释之间的相似度。
训练过程如下:
每次选择16个(NL,PL)二元组,每一个二元组都是一个正样本,第i个NL将与除第i个PL之外的每一个PL分别形成一个负样本对。接下来使用CodeBERT来计算所有的NL和PL向量表示以及所有正负样本对的内向量积。损失函数使用交叉熵损失函数。
本发明实施例将bug定位任务建模为分类任务,优化交叉熵损失,其定义为:
其中p=[p1,p2,..,pC],每一个元素pi表示该样本属于第i类的概率;y=[y1,y2,..,yC]是样本标签的one-hot表示,即当样本属于第i类时,yi=1,否则yi=0,C是类别总数。
S5、计算函数级语义交互特征;
首先将第一源文件按照函数级别进行拆分,得到第二源文件,然后利用步骤S4中训练好的CodeBERT语言模型计算bug报告和第二源文件间函数级语义交互特征,并利用MAX+MEAN方法对特征进行聚合。
S6、训练特征融合模型对TOP-K源文件进行精排;
本发明结合了深度学习模型强大的语义提取能力和信息检索模型抗噪声的优点,如图4所示,首先将源文件按照函数级别拆分,然后将步骤S2提取的词法特征和步骤S5计算的语义交互特征进行融合,并利用训练特征融合模型对TOP-K的候选源文件进行二次排序。
图3是本发明的再一种文件错误的定位方法实施例的步骤流程图,如图3所示,包括粗排阶段、模型阶段和精排阶段;其中,粗排阶段具体为:将bug报告和代码仓库输入到信息检索模块中,得到TOP-K源文件;
模型阶段包括:Codesearchnet数据库和目标项目数据对数据集构造模型进行训练,得到模型训练模块,即训练好的CodeBERT语言模型;
精排阶段:
将bug报告通过文件切割模块进行拆分,然后再通过函数级语义交互特征抽取模块和词法特征抽取模块进行聚合,最后特征融合模块即learning-to-rank模型训练,利用训练好的模型检索出TOP-K的候选源文件。
本发明实施例中提出了一个基于函数级语义交互的多阶段bug定位方法,它通过将源文件按照函数级别进行拆分,然后利用一个微调好的语言模型来计算源代码和错误报告之间的相似度特征,最后利用learning-to-rank法融合聚合后的函数级语义交互特征和文本特征来计算错误报告和源文件之间的相似性。本方法的核心思想是:通过组合预训练和微调模式,训练一个可以良好建模自然语言和编程语言间语义关系的模型,然后利用该模型计算bug报告和源程序文件间函数级别的交互特征。本发明将源文件分解为函数,推断bug报告和函数之间的关系,因此能够利用源代码文件中更为细致完整的语义信息,并避免了处理过长的信息,有助于提升bug定位的准确率。
图4本发明的语言模型训练流程图,如图4所示,本发明实施例结合了深度学习模型强大的语义提取能力和信息检索模型抗噪声的优点,首先将源文件按照函数级别拆分,然后将步骤S2提取的词法特征和步骤S5计算的语义交互特征进行融合,并利用步骤S6的方式训练特征融合模型对TOP-K的候选源文件进行二次排序。具体包括:
A1、函数级bug定位数据集构造;
A2、初始化模型参数;
A3、分批次输入模型;
A4、计算交叉熵损失函数,更新模型参数;
A5、模型收敛训练完成。
图5是本发明的特征融合模型训练流程图,如图5所示,具体包括:
B1、文件切割;
B2、计算函数级语义交互特征;
B3、计算词法特征;
B4、训练特征融合信息检索模型。
本发明实施例具有如下有益效果:通过计算函数级别语义交互特征,并和词法特征进行融合,更为细致地建模bug报告和源文件之间的相关性,并利用多阶段框架来减少计算量;提高了bug定位***的准确率,给定待测试软件程序及其bug报告,本发明能够准确定位含有给定bug的源文件。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
本发明实施例提供的文件错误的定位方法,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
本发明另一实施例提供一种文件错误的定位装置,用于执行上述实施例提供的文件错误的定位方法。
参照图6,示出了本发明的一种文件错误的定位装置实施例的结构框图,该装置具体可以包括如下模块:获取模块601、确定模块602、拆分模块603、定位模块604和聚合模块605,其中:
获取模块601用于获取待定位的多个测试报告文件;
确定模块602用于根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;
拆分模块603用于对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
定位模块604用于根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;
聚合模块605用于采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件。
本发明实施例提供的文件错误的定位装置,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
本发明又一实施例对上述实施例提供的文件错误的定位装置做进一步补充说明。
可选地,装置还包括模型建立模块,模型建立模块用于:
获取预设数量的不相关源文件的第一样本数据;
根据第一样本数据,对预设模型进行训练,得到训练结果;
在训练结果满足如下函数的情况下,确定第一损失函数;
其中:fixes(r)是预设错误报告的相关修复源文件集合,Φi(r,s)是错误报告和源文件的第i个特征;
当损失函数小于预设值时,将预设模型确定为错误检索模型。
可选地,预设模型至少包括AdaBoost树分类器、极端随机树分类器和梯度提升回归模型中的一种。
可选地,第一损失函数通过普通最小二乘法并结合正则化项来确定的,其中,正则化项至少包括无正则化或弹性网络。
可选地,预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,损失函数为交叉熵损失函数;其中,第二损失函数为:
其中:p=[p1,p2,..,pC],每一个元素pi表示该样本属于第i类的概率;y=[y1,y2,..,yC]是样本标签的one-hot表示,即当样本属于第i类时,yi=1,否则yi=0,C是类别总数。
可选地,采用预先建立的融合模块,对语义交互特征进行聚合,包括:
采用训练好的CodeBERT语言模型,确定待测试报告和第二源文件之间函数级语义交互特征;
采用最大值算法和平均值算法对函数级语义交互特征进行聚合,得到聚合后的特征向量。
可选地,聚合模块还用于:
采用学习排序learning-to-rank的方式融合词法特征和语义特征对多个第二源文件进行排序。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例提供的文件错误的定位装置,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
本发明再一实施例提供一种终端设备,用于执行上述实施例提供的文件错误的定位方法。
图7是本发明的一种终端设备的结构示意图,如图7所示,该终端设备包括:至少一个处理器701和存储器702;
存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例提供的文件错误的定位方法。
本实施例提供的终端设备,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
本申请又一实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序被执行时实现上述任一实施例提供的文件错误的定位方法。
根据本实施例的计算机可读存储介质,通过获取待定位的多个测试报告文件;根据预先建立的错误检索模型,确定与测试报告文件对应的多个第一源文件;对第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;根据预先建立的定位模型,确定测试报告文件和第二源文件之间函数级语义交互特征;采用预先建立的融合模块,对语义交互特征进行聚合,通过对多个第二源文件进行排序,确定与测试报告文件对应的目标源文件,可以快速查找到错误报告对应的目标源文件,提高了检测效率,节省时间。
应该指出,上述详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语均具有与本申请所属技术领域的普通技术人员的通常理解所相同的含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本申请的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位,如旋转90度或处于其他方位,并且对这里所使用的空间相对描述作出相应解释。
在上面详细的说明中,参考了附图,附图形成本文的一部分。在附图中,类似的符号典型地确定类似的部件,除非上下文以其他方式指明。在详细的说明书、附图及权利要求书中所描述的图示说明的实施方案不意味是限制性的。在不脱离本文所呈现的主题的精神或范围下,其他实施方案可以被使用,并且可以作其他改变。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种文件错误的定位方法,其特征在于,所述方法包括:
获取待定位的多个测试报告文件;
根据预先建立的错误检索模型,确定与所述测试报告文件对应的多个第一源文件;
所述预先建立的错误检索模型通过如下方式得到:
获取预设数量的不相关源文件的第一样本数据;
根据所述第一样本数据,对预设模型进行训练,得到训练结果;
在所述训练结果满足如下函数的情况下,确定第一损失函数;
当所述损失函数小于预设值时,将所述预设模型确定为所述错误检索模型;
对所述第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
根据预先建立的定位模型,确定所述测试报告文件和所述第二源文件之间函数级语义交互特征;
所述预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,所述第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据所述第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,所述损失函数为交叉熵损失函数;其中,所述第二损失函数为:
采用预先建立的融合模块,对所述语义交互特征进行聚合,通过对多个所述第二源文件进行排序,确定与所述测试报告文件对应的目标源文件;
所述采用预先建立的融合模块,对所述语义交互特征进行聚合,包括:
采用训练好的CodeBERT语言模型,确定待测试报告和所述第二源文件之间函数级语义交互特征;
采用最大值算法和平均值算法对所述函数级语义交互特征进行聚合,得到聚合后的特征向量。
2.根据权利要求1所述的方法,其特征在于,所述预设模型至少包括AdaBoost树分类器、极端随机树分类器和梯度提升回归模型中的一种。
3.根据权利要求1所述的方法,其特征在于,所述第一损失函数通过普通最小二乘法并结合正则化项来确定的,其中,所述正则化项至少包括无正则化或弹性网络。
4.根据权利要求1所述的方法,其特征在于,所述通过对多个所述第二源文件进行排序,还包括:
采用学习排序learning-to-rank的方式对所述聚合后的特征向量进行排序,得到排序后的结果;
根据所述排序后的结果,对多个所述第二源文件进行排序。
5.一种文件错误的定位装置,其特征在于,所述装置包括:
获取模块,用于获取待定位的多个测试报告文件;
确定模块,用于根据预先建立的错误检索模型,确定与所述测试报告文件对应的多个第一源文件;
所述预先建立的错误检索模型通过如下方式得到:
获取预设数量的不相关源文件的第一样本数据;
根据所述第一样本数据,对预设模型进行训练,得到训练结果;
在所述训练结果满足如下函数的情况下,确定第一损失函数;
当所述损失函数小于预设值时,将所述预设模型确定为所述错误检索模型;
拆分模块,用于对所述第一源文件按照函数级别进行拆分,得到拆分后的第二源文件;
定位模块,用于根据预先建立的定位模型,确定所述测试报告文件和所述第二源文件之间函数级语义交互特征;
所述预先建立的定位模型通过如下方式得到:
获取第二样本数据,其中,所述第二样本数据至少包括CodeSearchNet数据集和项目数据集;
根据所述第二样本数据对CodeBERT语言模型进行训练;
计算第二损失函数,所述损失函数为交叉熵损失函数;其中,所述第二损失函数为:
聚合模块,用于采用预先建立的融合模块,对所述语义交互特征进行聚合,通过对多个所述第二源文件进行排序,确定与所述测试报告文件对应的目标源文件;
所述采用预先建立的融合模块,对所述语义交互特征进行聚合,包括:
采用训练好的CodeBERT语言模型,确定待测试报告和所述第二源文件之间函数级语义交互特征;
采用最大值算法和平均值算法对所述函数级语义交互特征进行聚合,得到聚合后的特征向量。
6.一种终端设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-4中任一项所述的文件错误的定位方法。
7.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-4中任一项所述的文件错误的定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111532589.6A CN114416524B (zh) | 2021-12-15 | 2021-12-15 | 文件错误的定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111532589.6A CN114416524B (zh) | 2021-12-15 | 2021-12-15 | 文件错误的定位方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416524A CN114416524A (zh) | 2022-04-29 |
CN114416524B true CN114416524B (zh) | 2023-03-24 |
Family
ID=81268290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111532589.6A Active CN114416524B (zh) | 2021-12-15 | 2021-12-15 | 文件错误的定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416524B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115422092B (zh) * | 2022-11-03 | 2023-02-07 | 杭州金衡和信息科技有限公司 | 一种基于多方法融合的软件bug定位方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011175446A (ja) * | 2010-02-24 | 2011-09-08 | Hitachi Ltd | 要件・バグレポート処理システム及びその方法 |
US9280442B1 (en) * | 2011-01-27 | 2016-03-08 | Trimble Navigation Limited | System and method for generating coverage reports for software unit tests |
CN107844414A (zh) * | 2016-09-21 | 2018-03-27 | 南京大学 | 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法 |
CN112000802A (zh) * | 2020-07-24 | 2020-11-27 | 南京航空航天大学 | 基于相似度集成的软件缺陷定位方法 |
CN112597063A (zh) * | 2021-02-26 | 2021-04-02 | 北京北大软件工程股份有限公司 | 缺陷代码定位的方法、装置以及存储介质 |
CN113591074A (zh) * | 2021-06-21 | 2021-11-02 | 北京邮电大学 | 一种webshell检测方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10108526B2 (en) * | 2012-11-27 | 2018-10-23 | Purdue Research Foundation | Bug localization using version history |
US11061805B2 (en) * | 2018-09-25 | 2021-07-13 | International Business Machines Corporation | Code dependency influenced bug localization |
US11645192B2 (en) * | 2020-03-11 | 2023-05-09 | Nec Corporation | Graph-based method for inductive bug localization |
-
2021
- 2021-12-15 CN CN202111532589.6A patent/CN114416524B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011175446A (ja) * | 2010-02-24 | 2011-09-08 | Hitachi Ltd | 要件・バグレポート処理システム及びその方法 |
US9280442B1 (en) * | 2011-01-27 | 2016-03-08 | Trimble Navigation Limited | System and method for generating coverage reports for software unit tests |
CN107844414A (zh) * | 2016-09-21 | 2018-03-27 | 南京大学 | 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法 |
CN112000802A (zh) * | 2020-07-24 | 2020-11-27 | 南京航空航天大学 | 基于相似度集成的软件缺陷定位方法 |
CN112597063A (zh) * | 2021-02-26 | 2021-04-02 | 北京北大软件工程股份有限公司 | 缺陷代码定位的方法、装置以及存储介质 |
CN113591074A (zh) * | 2021-06-21 | 2021-11-02 | 北京邮电大学 | 一种webshell检测方法及装置 |
Non-Patent Citations (5)
Title |
---|
ABAR:基于源代码的缺陷自动分析;梁洪亮;《第三届信息安全漏洞分析与风险评估大会(VARA2010)论文集》;20110922;全文 * |
Deep Learning With Customized Abstract Syntax Tree for Bug Localization;HONGLIANG LIANG;《IEEE Access》;20190903;全文 * |
Seml: A Semantic LSTM Model for Software Defect Prediction;HONGLIANG LIANG;《IEEE Access》;20190712;全文 * |
Shuai Lu.CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation.《arXiv Software Engineering (cs.SE)》.2021, * |
基于信息检索的软件缺陷定位技术研究进展;张芸等;《软件学报》;20200815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114416524A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201871B (zh) | 基于代价敏感半监督的软件缺陷预测方法 | |
Wang et al. | Compositional vector space models for improved bug localization | |
CN110928764B (zh) | 移动应用众包测试报告自动化评估方法及计算机存储介质 | |
CN109376092B (zh) | 一种面向缺陷补丁代码的软件缺陷原因自动分析方法 | |
CN105069470A (zh) | 分类模型训练方法及装置 | |
CN110968695A (zh) | 基于弱监督技术主动学***台 | |
CN104471501A (zh) | 用于设备状态监测中故障诊断的归纳的模式识别 | |
CN111427775B (zh) | 一种基于Bert模型的方法层次缺陷定位方法 | |
Otoom et al. | Severity prediction of software bugs | |
CN110580489B (zh) | 一种数据对象的分类***、方法以及设备 | |
WO2020143301A1 (zh) | 一种训练样本有效性检测方法、计算机设备及计算机非易失性存储介质 | |
CN107545038A (zh) | 一种文本分类方法与设备 | |
CN114416524B (zh) | 文件错误的定位方法及装置 | |
CN104615910A (zh) | 基于随机森林预测α跨膜蛋白的螺旋相互作用关系的方法 | |
CN109992667A (zh) | 一种文本分类方法以及装置 | |
CN103310126A (zh) | 分类模型的建立方法及装置 | |
Kaur et al. | A clustering algorithm for software fault prediction | |
Samad et al. | A Cognitive Approach in Software Automation Testing | |
CN111699472B (zh) | 确定用于开发复杂嵌入式或信息物理***的方法 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN110458383A (zh) | 需求处理服务化的实现方法、装置及计算机设备、存储介质 | |
Bareja et al. | A review of estimation techniques to reduce testing efforts in software development | |
Salman | Test case generation from specifications using natural language processing | |
CN107291722B (zh) | 一种描述词的分类方法及设备 | |
Cai et al. | Reports aggregation of crowdsourcing test based on feature fusion |
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 |