CN109359023A - 基于提交信息的移动应用错误定位方法 - Google Patents
基于提交信息的移动应用错误定位方法 Download PDFInfo
- Publication number
- CN109359023A CN109359023A CN201810392611.3A CN201810392611A CN109359023A CN 109359023 A CN109359023 A CN 109359023A CN 201810392611 A CN201810392611 A CN 201810392611A CN 109359023 A CN109359023 A CN 109359023A
- Authority
- CN
- China
- Prior art keywords
- document
- code file
- sound code
- indicate
- similarity
- 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
Links
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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于提交信息的移动应用错误定位方法,属于计算机科学与技术,软件工程领域。首先,摘要语法树技术将所有的候选源码文件构建成结构化文档。其次,通过对缺陷报告,候选源码文件以及提交信息进行预处理,结构化及非结构化索引被建立。历史缺陷报告和提交信息之所以被作为非结构化索引,是因为它们不包含任何域。然后,计算查询条件和候选源文件结构化索引的相似度、查询条件与提交信息和历史缺陷报告的非结构化索引的相似度。最后,通过融合以上的相似度,错误定位方法将返回查询条件所描述的错误的源文件列表。由此,面向移动应用的错误定位任务完成。本方法在移动应用中表现出了比传统方法更好的性能。
Description
技术领域
本申请属于计算机科学与技术,软件工程领域。
背景技术
过去的错误定位方法主要应用在传统桌面软件上,因此并没有考虑到移动应用(即Mobile Apps)所具备的特性。这些特性包含较少数量的历史缺陷报告以及较少的缺陷细节(比如程序实体名等信息)描述。它们会导致过去在桌面软件上所适用的方法并不能够适用在移动应用中。举例来说,两阶段模型和BugLocator这两种过去的方法都需要依靠大规模的历史缺陷报告。而BLUiR则需要充分的缺陷细节描述信息。在这种情况下,如果将过去的方法应用在移动应用中则会导致性能的严重下降。
发明内容:
为了解决上述现有方法应用在移动应用中会导致性能严重下降等问题,实现面向移动应用的错误定位技术,每一个新的缺陷报告(包含题目和描述等)作为查询条件用来搜索错误发生的源码文件。在技术的实现过程中,历史缺陷报告,源码文件以及提交信息等数据源用来完成缺陷定位的任务。
为解决上述问题,本发明提供的基于提交信息的移动应用错误定位方法技术方案为:首先,摘要语法树技术将所有的候选源码文件构建成结构化文档。其次,通过对缺陷报告,候选源码文件以及提交信息进行预处理,结构化及非结构化索引被建立。历史缺陷报告和提交信息之所以被作为非结构化索引,是因为它们不包含任何域。然后,BM25F用来计算查询条件和候选源文件结构化索引的相似度;BM25用来分别计算查询条件与提交信息和历史缺陷报告的非结构化索引的相似度。最后,通过融合以上的相似度,错误定位方法将返回查询条件所描述的错误的源文件列表。由此,面向移动应用的错误定位任务完成。
所述提交信息,是指开发者提交信息,英文名称为commit message。是指开发者变更代码时向系统提交的相关修改信息。
上述技术方案具体的为:
1)提取候选源码文件结构化信息:用Java语言分析工具Eclipse JavaDevelopment Tools(JDT)来创建每一个候选源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息,最后每一个候选源码文件的结构化信息保存在一个.xml的结构化文档中;所述结构化信息为类名、方法名、变量名或代码注释中的一种或多种;
源码文件中的结构化信息(即类名,方法名,变量名,代码注释)可以提升错误定位的精确率,因此有必要提取该类信息并用来设计新的面向移动应用的错误定位方法。
Java语言分析工具Eclipse Java Development Tools(JDT)用来创建每一个源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息。创建摘要语法数可以排除程序语言关键字(比如“if”,“else”,“class”等),并且可以很容易提取标识符名和代码注释等信息。
2)对文档进行预处理和建立索引:利用自然语言处理技术对文档进行预处理,将预处理后的输出作为历史缺陷报告、候选源码文件以及提交信息的索引,在索引中,历史缺陷报告和提交信息均与候选源码文件关联;所述文档为历史缺陷报告,步骤1)所得结构化文档以及提交信息;
缺陷报告和提交信息均和候选源码文件相关联,该关联关系通过GitHub项目仓库中的信息进行挖掘得出。在GitHub项目仓库中,开发者提交信息因为修改了相应的源码文件,因此每一条提交信息都会与上述相应的候选源码文件链接。通过查询提交信息,GitHub就会显示出与此相链接的经过修改的源码文件。而用户提交信息一般会显示出缺陷报告的ID,通过此ID可以很容易的查找到所链接的缺陷报告。
3)对候选源码文件进行排序和检索:当给定一个新的缺陷报告,即查询条件时,错误发生源码文件的检索过程开始;计算查询条件与候选源码文件的相似度,查询条件与历史缺陷报告的相似度,以及查询条件与提交信息的相似度,通过计算得到的相似度,在索引中定位该缺陷发生的位置,即错误发生源码文件。
进一步地,步骤3)所述通过计算得到的相似度,在索引中定位该缺陷发生的位置的方法为:
RS(q,sf)=α·S(q,sf)+β·S(q,Bsf)+(1-α-β)·S(q,Csf) (1)
其中,sf代表候选源码文件,RS(q,sf)表示每一个检索条件即错误或缺陷q可能发生的源码文件sf的排序分数,最终可以推荐错误发生源文件(得到排序分数后,一般选择最高分数的一个或者几个作为错误发生源文件,因为一个缺陷可能对应一个或者几个错误发生的源文件);S(q,sf)表示查询条件与候选源码文件sf的相似度;S(q,Bsf)表示查询条件与所有与候选源码文件sf相关联的历史缺陷报告的相似度;S(q,Csf)表示查询条件与所有与候选源码文件sf相关联的提交信息的相似度;Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;α和β是调节参数,用来调节不同相似度的权重。
进一步地,步骤2)所述自然语言处理技术是使用Natural Language Toolkit(NLTK)通过提供多种程序接口来关联文本处理库来实现的;所述所述预处理包括分词,停止词去除以及归根化。
进一步地,步骤3)所述计算查询条件与候选源码文件的相似度的方法为:利用信息检索模型Okapi BM25来排序候选源码文件;该模型包括BM25算法以及它的变种形式BM25F;其中,BM25F更适合进行结构化文档的相似度计算;BM25F的方程如下所示:
其中,q为检索条件即错误或缺陷,d为文档,IDF为逆向文档频率,k1是一种调节参数,它用来调节TFD(t,d)的规模;TFD(t,d)代表基于域依赖的词频t在文档d中的正则化词频,t为同时出现在查询条件和文档d中的词汇。
进一步地,步骤3)所述计算查询条件与候选源码文件的相似度的方法为:公式如下:
其中的q代表检索条件即错误或缺陷,sf代表候选源码文件;IDF为逆向文档频率;TFSF(t,d)代表基于域依赖的词频t在域f中的正则化词频;k1是一种调节参数,它用来调节TFSF(t,d)的规模;tf(t,q)表示词汇t在查询条件q中的词频;k3是一种调节参数,用来调节tf(t,q)的权重。
进一步地,所述TFD(t,d)或TFSF(t,d)计算公式如下:
其中ωf是域,即类名,方法名,变量名以及代码注释的权重参数,它的值越大越表示该域的重要性越高;o(d[f],t)表示词汇t在域f中出现的次数;ld[f]表示文档d中第f域的长度,所述长度为单词个数;表示所有文档d中第f域的平均长度;bf是一种调节参数,它决定域长度的缩放比例:当该值为1时代表全长度正则化,当该值为0时表示词权重不会被长度正则化。
进一步地,步骤3)所述计算查询条件与关联候选源码文件的文档A,即提交信息和历史缺陷报告的相似度的公式为:
或
其中,q为检索条件即错误或缺陷,d为文档,t是同时出现在查询条件q和文档d中的词汇;IDF(t)表示逆向文档频率;tf(t,d)表示词汇t在文档d中的出现频率,ld表示文档d的长度,表示所有文档的平均长度,k′1和b为调节参数,分别用来调节词频和正则化文档长度的权重;所述长度为文档单词个数;
sf代表候选源码文件;dsf表示与候选源码文件sf相关联的提交信息或者历史缺陷报告;tf(t,dsf)表示词汇t在dsf中的词频;tf(t,q)表示词汇t在查询条件q中的词频;为dsf的长度;k′3为调节参数,用来控制词频tf(t,q)的权重,b为调节参数,用来控制归一化后dsf的长度的权重。
进一步地,所述IDF计算公式如下:
在此公式中,N代表文档的数量,nt代表包含词汇t的文档的数量;0.5的作用是为了避免因nt=0导致的分母为0的情况。
进一步地,步骤3)所述对于任一个源码文件,往往有超过一个提交信息或者历史缺陷报告与之关联。另外,每一条提交信息或一个历史缺陷报告可能与多个源码文件关联。因此设计的方法有必要考虑到源码文件和所有提起信息和历史缺陷报告的关联关系。查询条件与所有与候选源码文件相关联的提交信息的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Csf表示所有与源码文件sf相关联的提交信息的集合;M表示上述提交信息的数量;sim(q,ci)表示查询条件和每一条在Csf中的提交信息ci的相似度;ni表示所有ci关联到的源码文件的数量;
进一步地,步骤3)所述查询条件与所有与候选源码文件相关联的历史缺陷报告的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;M′表示上述历史缺陷报告的数量;sim(q,bj)表示查询条件和每一个在Bsf中的历史缺陷报告bj的相似度;nj表示所有bj关联到的源码文件的数量。
有益效果
本发明解决了现有错误定位方法中,由于移动应用包含较少数量的历史缺陷报告以及较少的缺陷细节描述,导致这些方法并不能够适用在移动应用中或应用在移动应用中性能严重下降的问题;提交信息就是当开发者修改代码时候向系统所提交的信息,这些提交信息是非常有用的数据源,它们包含了缺陷的细节描述信息;本发明提供的错误定位方法是基于提交信息的,在移动应用中表现出了比传统方法更好的性能,以移动应用K-9Mail为例,本方法的平均倒数排序法分值(即MRR值)为0.832,比实施例中提及的其他三种常用传统方法中表现最好的BLUiR高出0.228(即22.8%个百分点)。并且,本发明还对传统的BM25F和BM25算法进行了改进,解决了这两种传统算法只能被用来处理查询条件的长度很短的情况的问题,使得本发明提供的方法适应查询条件长度较长的错误定位的任务。
附图说明
图1移动应用错误定位方法框图;
图2候选源码文件、缺陷报告和提交信息三层链接关系图。
具体实施方式
实施例1基于提交信息的移动应用错误定位方法:
1)提取候选源码文件结构化信息:用Java语言分析工具Eclipse JavaDevelopment Tools(JDT)来创建每一个候选源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息,最后每一个候选源码文件的结构化信息保存在一个.xml的结构化文档中;所述结构化信息为类名、方法名、变量名或代码注释中的一种或多种;
源码文件中的结构化信息(即类名,方法名,变量名,代码注释)可以提升错误定位的精确率,因此有必要提取该类信息并用来设计新的面向移动应用的错误定位方法。
Java语言分析工具Eclipse Java Development Tools(JDT)用来创建每一个源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息。创建摘要语法数可以排除程序语言关键字(比如“if”,“else”,“class”等),并且可以很容易提取标识符名和代码注释等信息。
2)对文档进行预处理和建立索引:利用自然语言处理技术对文档进行预处理,将预处理后的输出作为缺陷报告、候选源码文件以及提交信息的索引,在索引中,缺陷报告和提交信息均与候选源码文件关联;所述文档为缺陷报告,步骤1)所得结构化文档以及提交信息;
缺陷报告和提交信息均和候选源码文件相关联,该关联关系通过GitHub项目仓库中的信息进行挖掘得出。在GitHub项目仓库中,开发者提交信息因为修改了相应的源码文件,因此每一条提交信息都会与候选源码文件链接。通过查询提交信息,GitHub就会显示出与此相链接的经过修改的源码文件。而用户提交信息一般会显示出缺陷报告的ID,通过此ID可以很容易的查找到所链接的缺陷报告。
3)对候选源码文件进行排序和检索:当给定一个新的缺陷报告,即查询条件时,错误发生源码文件的检索过程开始;计算查询条件与候选源码文件的相似度,查询条件与历史缺陷报告的相似度,以及查询条件与提交信息的相似度,通过计算得到的相似度,在索引中定位该缺陷发生的位置,即错误发生源码文件;所述历史缺陷报告为步骤2)中的缺陷报告。
步骤3)所述通过计算得到的相似度,在索引中定位该缺陷发生的位置的方法为:
RS(q,sf)=α·S(q,sf)+β·S(q,Bsf)+(1-α-β)·S(q,Csf) (1)
其中,sf代表候选源码文件,RS(q,sf)表示每一个检索条件即错误或缺陷q可能发生的源码文件sf的排序分数,最终可以推荐错误发生源文件(得到排序分数后,一般选择最高分数的一个或者几个作为错误发生源文件的,因为一个缺陷可能对应一个或者几个错误发生的源文件);S(q,sf)表示查询条件与候选源码文件sf的相似度;S(q,Bsf)表示查询条件与所有与候选源码文件sf相关联的历史缺陷报告的相似度;S(q,Csf)表示查询条件与所有与候选源码文件sf相关联的提交信息的相似度;Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;α和β是调节参数,用来调节不同相似度的权重。
步骤2)所述自然语言处理技术是使用Natural Language Toolkit(NLTK)通过提供多种程序接口来关联文本处理库来实现的;所述所述预处理包括分词,停止词去除以及归根化。
步骤3)所述计算查询条件与候选源码文件的相似度的方法为:利用信息检索模型Okapi BM25来排序候选源码文件;该模型包括BM25算法以及它的变种形式BM25F;其中,BM25F更适合进行结构化文档的相似度计算;BM25F的方程如下所示:
其中,q为检索条件即错误或缺陷,d为文档,IDF为逆向文档频率,k1是一种调节参数,它用来调节TFD(t,d)的规模;TFD(t,d)代表基于域依赖的词频t在文档d中的正则化词频,t为同时出现在查询条件和文档d中的词汇。
步骤3)所述计算查询条件与候选源码文件的相似度的方法为:公式如下:
其中的q代表检索条件即错误或缺陷,sf代表候选源码文件;IDF为逆向文档频率;TFSF(t,d)代表基于域依赖的词频t在域f中的正则化词频;k1是一种调节参数,它用来调节TFSF(t,d)的规模;tf(t,q)表示词汇t在查询条件q中的词频;k3是一种调节参数,用来调节tf(t,q)的权重。
所述TFD(t,d)或TFSF(t,d)计算公式如下:
其中ωf是域,即类名,方法名,变量名以及代码注释的权重参数,它的值越大越表示该域的重要性越高;o(d[f],t)表示词汇t在域f中出现的次数;ld[f]表示文档d中第f域的长度,所述长度为单词个数;表示所有文档d中第f域的平均长度;bf是一种调节参数,它决定域长度的缩放比例:当该值为1时代表全长度正则化,当该值为0时表示词权重不会被长度正则化。
步骤3)所述计算查询条件与关联候选源码文件的文档A,即提交信息和历史缺陷报告的相似度的公式为:
或
其中,q为检索条件即错误或缺陷,d为文档,t是同时出现在查询条件q和文档d中的词汇;IDF(t)表示逆向文档频率;tf(t,d)表示词汇t在文档d中的出现频率,ld表示文档d的长度,表示所有文档的平均长度,k′1和b为调节参数,分别用来调节词频和正则化文档长度的权重;所述长度为文档单词个数;
sf代表候选源码文件;dsf表示与候选源码文件sf相关联的提交信息或者历史缺陷报告;tf(t,dsf)表示词汇t在dsf中的词频;tf(t,q)表示词汇t在查询条件q中的词频;为dsf的长度;k′3为调节参数,用来控制词频tf(t,q)的权重,b为调节参数,用来控制归一化后dsf长度的权重。
所述IDF计算公式如下:
在此公式中,N代表文档的数量,nt代表包含词汇t的文档的数量;0.5的作用是为了避免因nt=0导致的分母为0的情况。
步骤3)所述对于任一个源码文件,往往有超过一个提交信息或者历史缺陷报告与之关联。另外,每一条提交信息或一个历史缺陷报告可能与多个源码文件关联。因此设计的方法有必要考虑到源码文件和所有提起信息和历史缺陷报告的关联关系。查询条件与所有与候选源码文件相关联的提交信息的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Csf表示所有与源码文件sf相关联的提交信息的集合;M表示上述提交信息的数量;sim(q,ci)表示查询条件和每一条在Csf中的提交信息ci的相似度;ni表示所有ci关联到的源码文件的数量;
步骤3)所述查询条件与所有与候选源码文件相关联的历史缺陷报告的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;M′表示上述历史缺陷报告的数量;sim(q,bj)表示查询条件和每一个在Bsf中的历史缺陷报告bj的相似度;nj表示所有bj关联到的源码文件的数量。
实施例2
为了证实方法的有效性和与已存在方法相比的优势,方法运行在10个最受欢迎的移动应用中(根据GitHub中排序列表遴选出100个最受欢迎的移动应用,再过滤掉少于40个缺陷报告的移动应用,最终选定10个最受欢迎的移动应用)进行验证。相关数据集如表1所示。
评估手段使用了如下四种评估方程:
1.Top-10N1召回率:该方程统计了成功被定位的缺陷报告(查询条件)数量。当给定一个新的缺陷报告(即查询条件),如果前10个最终返回的推荐结果中包含至少一个该缺陷发生的源码文件,该缺陷被视为成功定位。
2.Top-10Nhalf召回率:该方程统计了成功被定位的缺陷报告(查询条件)数量。当给定一个新的缺陷报告(即查询条件),如果前10个最终返回的推荐结果中包含至少一半该缺陷发生的源码文件,该缺陷被视为成功定位。
3.Top-10Nall召回率:该方程统计了成功被定位的缺陷报告(查询条件)数量。当给定一个新的缺陷报告(即查询条件),如果前10个最终返回的推荐结果中包含所有的该缺陷发生的源码文件,该缺陷被视为成功定位。
4.平均倒数排序法(Mean Reciprocal Rank):一个查询条件的得分是第一个返回的正确结果所处位次的倒数。平均倒数排序法是衡量一个查询条件集整体的排序情况的平均值。其计算公式如下:
其中Nq是查询条件的数量,Ranki是第一个返回的正确结果(即正确的缺陷发生源文件)所处的位次。
表1实验数据集规模
通过与之前研究方法BugLocator,BLUiR以及两阶段模型的比较,评估结果如表2所示。
表2方法性能比较结果
MRR为平均倒数排序法分值。
Top-10N1表示最终得到的前10个(按分数排列)候选源码文件中,如果至少有一个源码文件包含查询条件所描述的缺陷。我们认为定位成功。该列表示定位成功的次数。
Top-10Nhalf表示最终得到的前10个(按分数排列)候选源码文件中,如果至少有一半数量的源码文件包含查询条件所描述的缺陷,我们认为定位成功。该列表示定位成功的次数。
Top-10Nall表示最终得到的前10个(按分数排列)候选源码文件中,如果所有的源码文件都包含查询条件所描述的缺陷,我们认为定位成功。该列表示定位成功的次数。
根据评估结果,可以看到本方法比之前提出的方法BugLocator,BLUiR以及两阶段模型的性能都更优越。以K-9Mail为例,本方法的平均倒数排序法分值(即MRR值)为0.832。比其他三种方法中表现最好的BLUiR高出0.228(即22.8%个百分点)。由此可见本方法在移动应用中表现出更好的性能。两阶段模型表现的最差,主要原因为大多数移动应用中的缺陷报告缺乏细节信息,所以在第一阶段就被过滤掉,从而导致结果变差。
通过研究发现在移动应用中,每一个源码文件都会关联若干条提交信息。提交信息就是当开发者修改代码时候向系统所提交的信息。这些提交信息是非常有用的数据源,它们包含了缺陷的细节描述信息。基于提交信息,本发明提供了一种新型的面向移动应用的错误定位方法。该方法采用了信息检索技术。具体地,以一个新提交的缺陷报告作为查询条件(算法输入),通过文本相似度算法得到该缺陷所发生的源码文件(算法输出)。本发明提供的方法不仅考虑了新提交缺陷报告和候选源码文件之间的结构化相似度,也考虑到了新提交缺陷报告和与候选源码文件相关联的提交信息之间的非结构化相似度。
Claims (8)
1.基于提交信息的移动应用错误定位方法,其特征在于:包含以下步骤:
1)提取候选源码文件结构化信息:用Java语言分析工具来创建每一个候选源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息,最后每一个候选源码文件的结构化信息保存在一个.xml的结构化文档中;所述结构化信息为类名、方法名、变量名或代码注释中的一种或多种;
2)对文档进行预处理和建立索引:利用自然语言处理技术对文档进行预处理,将预处理后的输出作为历史缺陷报告、候选源码文件以及提交信息的索引,在索引中,历史缺陷报告和提交信息均与候选源码文件关联,该关联关系通过GitHub项目仓库中的信息进行挖掘得出;所述文档为历史缺陷报告,步骤1)所得结构化文档以及提交信息;
3)对候选源码文件进行排序和检索:当给定一个新的缺陷报告,即查询条件时,错误发生源码文件的检索过程开始;计算查询条件与候选源码文件的相似度,查询条件与历史缺陷报告的相似度,以及查询条件与提交信息的相似度,通过融合计算得到的相似度,在索引中定位该缺陷发生的位置,检索出错误发生源码文件。
2.根据权利要求1所述的方法,其特征在于:步骤3)所述通过计算得到的相似度,在索引中定位该缺陷发生的位置的方法为:
RS(q,sf)=α·S(q,sf)+β·S(q,Bsf)+(1-α-β)·S(q,Csf) (1)
其中,sf代表候选源码文件,RS(q,sf)表示每一个检索条件即错误或缺陷q可能发生的源码文件sf的排序分数,最终可以推荐错误发生源文件;S(q,sf)表示查询条件与候选源码文件sf的相似度;S(q,Bsf)表示查询条件与所有与候选源码文件sf相关联的历史缺陷报告的相似度;S(q,Csf)表示查询条件与所有与候选源码文件sf相关联的提交信息的相似度;Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;α和β是调节参数,用来调节不同相似度的权重。
3.根据权利要求1所述的方法,其特征在于:步骤2)所述自然语言处理技术是使用Natural Language Toolkit通过提供多种程序接口来关联文本处理库来实现的;所述预处理包括分词,停止词去除以及归根化。
4.根据权利要求1所述的方法,其特征在于:步骤3)所述计算查询条件与候选源码文件的相似度的方法为:利用信息检索模型Okapi BM25来排序候选源码文件;BM25F的方程如下所示:
其中,q为检索条件即错误或缺陷,d为文档,IDF为逆向文档频率,k1是一种调节参数,它用来调节TFD(t,d)的规模;TFD(t,d)代表基于域依赖的词频t在文档d中的正则化词频,t为同时出现在查询条件和文档d中的词汇,所述文档为候选源码文件;
所述TFD(t,d)计算公式如下:
其中ωf是域,即类名,方法名,变量名以及代码注释的权重参数,它的值越大越表示该域的重要性越高;o(d[f],t)表示词汇t在域f中出现的次数;ld[f]表示文档d中第f域的长度,所述长度为单词个数;表示所有文档d中第f域的平均长度;bf是一种调节参数,它决定域长度的缩放比例:当该值为1时代表全长度正则化,当该值为0时表示词权重不会被长度正则化;
所述IDF计算公式如下:
在此公式中,N代表文档的数量,nt代表包含词汇t的文档的数量。
5.根据权利要求1或2所述的方法,其特征在于:步骤3)所述计算查询条件与候选源码文件的相似度的方法为:公式如下:
其中的q代表检索条件即错误或缺陷,sf代表候选源码文件;IDF为逆向文档频率;TFSF(t,d)代表基于域依赖的词频t在域f中的正则化词频;k1是一种调节参数,它用来调节TFSF(t,d)的规模;tf(t,q)表示词汇t在查询条件q中的词频;k3是一种调节参数,用来调节tf(t,q)的权重;
所述TFD(t,d)或TFSF(t,d)计算公式如下:
其中ωf是域,即类名,方法名,变量名以及代码注释的权重参数,它的值越大越表示该域的重要性越高;o(d[f],t)表示词汇t在域f中出现的次数;ld[f]表示文档d中第f域的长度,所述长度为单词个数;表示所有文档d中第f域的平均长度;bf是一种调节参数,它决定域长度的缩放比例:当该值为1时代表全长度正则化,当该值为0时表示词权重不会被长度正则化;
所述IDF计算公式如下:
在此公式中,N代表文档的数量,nt代表包含词汇t的文档的数量。
6.根据权利要求1或2所述的方法,其特征在于:步骤3)所述计算查询条件与关联候选源码文件的文档A的相似度的公式为:
或
所述文档A即提交信息和历史缺陷报告;其中,q为检索条件即错误或缺陷,d为文档,t是同时出现在查询条件q和文档d中的词汇;IDF(t)表示逆向文档频率;tf(t,d)表示词汇t在文档d中的出现频率,ld表示文档d的长度,表示所有文档的平均长度,k′1和b为调节参数,分别用来调节词频和正则化文档长度的权重;所述长度为文档单词个数;
sf代表候选源码文件;dsf表示与候选源码文件sf相关联的提交信息或者历史缺陷报告;tf(t,dsf)表示词汇t在dsf中的词频;tf(t,q)表示词汇t在查询条件q中的词频;表示dsf的长度;k′3为调节参数,用来控制词频tf(t,q)的权重,b为调节参数,用来控制归一化后dsf长度的权重;
所述IDF计算公式如下:
在此公式中,N代表文档的数量,nt代表包含词汇t的文档的数量。
7.根据权利要求1或2所述的方法,其特征在于:步骤3)所述查询条件与所有与候选源码文件相关联的提交信息的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Csf表示所有与源码文件sf相关联的提交信息的集合;M表示上述提交信息的数量;sim(q,ci)表示查询条件和每一条在Csf中的提交信息ci的相似度;ni表示所有ci关联到的源码文件的数量。
8.根据权利要求1或2所述的方法,其特征在于:步骤3)所述查询条件与所有与候选源码文件相关联的历史缺陷报告的相似度计算公式如下所示:
其中,q表示检索条件即错误或缺陷,sf代表候选源码文件,Bsf表示所有与源码文件sf相关联的历史缺陷报告的集合;M′表示上述历史缺陷报告的数量;sim(q,bj)表示查询条件和每一个在Bsf中的历史缺陷报告bj的相似度;nj表示所有bj关联到的源码文件的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810392611.3A CN109359023B (zh) | 2018-04-27 | 2018-04-27 | 基于提交信息的移动应用错误定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810392611.3A CN109359023B (zh) | 2018-04-27 | 2018-04-27 | 基于提交信息的移动应用错误定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359023A true CN109359023A (zh) | 2019-02-19 |
CN109359023B CN109359023B (zh) | 2020-01-24 |
Family
ID=65349607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810392611.3A Expired - Fee Related CN109359023B (zh) | 2018-04-27 | 2018-04-27 | 基于提交信息的移动应用错误定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359023B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591643A (zh) * | 2023-11-10 | 2024-02-23 | 杭州市余杭区数据资源管理局 | 一种基于改进的结构化处理的项目文本查重方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181592A1 (en) * | 2012-12-21 | 2014-06-26 | Microsoft Corporation | Diagnostics of declarative source elements |
CN104102574A (zh) * | 2013-04-07 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 应用程序测试方法及装置 |
CN104317707A (zh) * | 2014-10-15 | 2015-01-28 | 中国科学院软件研究所 | 一种基于程序结构影响感知的软件错误定位方法 |
CN104536863A (zh) * | 2014-12-08 | 2015-04-22 | 广东欧珀移动通信有限公司 | 一种应用程序的测试方法及装置 |
CN105930277A (zh) * | 2016-07-11 | 2016-09-07 | 南京大学 | 一种基于缺陷报告分析的缺陷源代码定位方法 |
CN106339315A (zh) * | 2016-08-19 | 2017-01-18 | 东软集团股份有限公司 | 定位缺陷的方法及装置 |
CN106502909A (zh) * | 2016-11-07 | 2017-03-15 | 南京大学 | 一种智能手机应用开发中的代码缺陷预测方法 |
CN106649557A (zh) * | 2016-11-09 | 2017-05-10 | 北京大学(天津滨海)新代信息技术研究院 | 一种缺陷报告与邮件列表语义关联挖掘方法 |
US20180063670A1 (en) * | 2016-08-26 | 2018-03-01 | Microsoft Technology Licensing, Llc | Background management of mobile applications |
-
2018
- 2018-04-27 CN CN201810392611.3A patent/CN109359023B/zh not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181592A1 (en) * | 2012-12-21 | 2014-06-26 | Microsoft Corporation | Diagnostics of declarative source elements |
CN104102574A (zh) * | 2013-04-07 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 应用程序测试方法及装置 |
CN104317707A (zh) * | 2014-10-15 | 2015-01-28 | 中国科学院软件研究所 | 一种基于程序结构影响感知的软件错误定位方法 |
CN104536863A (zh) * | 2014-12-08 | 2015-04-22 | 广东欧珀移动通信有限公司 | 一种应用程序的测试方法及装置 |
CN105930277A (zh) * | 2016-07-11 | 2016-09-07 | 南京大学 | 一种基于缺陷报告分析的缺陷源代码定位方法 |
CN106339315A (zh) * | 2016-08-19 | 2017-01-18 | 东软集团股份有限公司 | 定位缺陷的方法及装置 |
US20180063670A1 (en) * | 2016-08-26 | 2018-03-01 | Microsoft Technology Licensing, Llc | Background management of mobile applications |
CN106502909A (zh) * | 2016-11-07 | 2017-03-15 | 南京大学 | 一种智能手机应用开发中的代码缺陷预测方法 |
CN106649557A (zh) * | 2016-11-09 | 2017-05-10 | 北京大学(天津滨海)新代信息技术研究院 | 一种缺陷报告与邮件列表语义关联挖掘方法 |
Non-Patent Citations (1)
Title |
---|
KLAUS CHANGSUN YOUM ETC: "Bug Localization Based on Code Change Histories", 《ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591643A (zh) * | 2023-11-10 | 2024-02-23 | 杭州市余杭区数据资源管理局 | 一种基于改进的结构化处理的项目文本查重方法及系统 |
CN117591643B (zh) * | 2023-11-10 | 2024-05-10 | 杭州市余杭区数据资源管理局 | 一种基于改进的结构化处理的项目文本查重方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109359023B (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10261954B2 (en) | Optimizing search result snippet selection | |
US8965915B2 (en) | Assisted query formation, validation, and result previewing in a database having a complex schema | |
US7673234B2 (en) | Knowledge management using text classification | |
US11386510B2 (en) | Method and system for integrating web-based systems with local document processing applications | |
JP3870666B2 (ja) | 文書検索方法および装置並びにその処理プログラムを記録した記録媒体 | |
US8983963B2 (en) | Techniques for comparing and clustering documents | |
US8145636B1 (en) | Classifying text into hierarchical categories | |
CN104199965B (zh) | 一种语义信息检索方法 | |
CN110637316B (zh) | 用于预期对象识别的系统和方法 | |
CN108509405A (zh) | 一种演示文稿的生成方法、装置以及设备 | |
WO2011006412A1 (zh) | 文件内容的特征词的输入和处理方法 | |
CN101539904A (zh) | 一种引文自动标引方法 | |
US10678820B2 (en) | System and method for computerized semantic indexing and searching | |
Van Britsom et al. | Using data merging techniques for generating multidocument summarizations | |
KR20110133909A (ko) | 모든 자연어 표현의 각각의 의미마다 별도의 용어를 동적으로 생성하는 방법 및 이를 기반으로 하는 사전 관리기,문서작성기, 용어 주석기, 검색 시스템 및 문서정보체계 구축장치 | |
TWI290687B (en) | System and method for search information based on classifications of synonymous words | |
CN109359023A (zh) | 基于提交信息的移动应用错误定位方法 | |
WO2019222787A1 (en) | A computer implemented method and a computer system for determining a set of citations related to an electronic document edited by a user on a computing device | |
US20220138407A1 (en) | Document Writing Assistant with Contextual Search Using Knowledge Graphs | |
Ma et al. | Api prober–a tool for analyzing web api features and clustering web apis | |
CN115600556B (zh) | 一种文档的目录信息推荐方法及系统 | |
US20230134989A1 (en) | System and method for building document relationships and aggregates | |
CN116361469B (zh) | 一种基于预训练模型的话题生成方法 | |
US20180143985A1 (en) | A system and method of designating documents to associate with a search record | |
Coskun et al. | Email Clustering & Generating Email Templates Based on Their Topics |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200124 Termination date: 20210427 |