基于提交信息的移动应用错误定位方法技术

技术编号:20389354 阅读:36 留言:0更新日期:2019-02-20 02:39
本发明专利技术公开了一种基于提交信息的移动应用错误定位方法,属于计算机科学与技术,软件工程领域。首先,摘要语法树技术将所有的候选源码文件构建成结构化文档。其次,通过对缺陷报告,候选源码文件以及提交信息进行预处理,结构化及非结构化索引被建立。历史缺陷报告和提交信息之所以被作为非结构化索引,是因为它们不包含任何域。然后,计算查询条件和候选源文件结构化索引的相似度、查询条件与提交信息和历史缺陷报告的非结构化索引的相似度。最后,通过融合以上的相似度,错误定位方法将返回查询条件所描述的错误的源文件列表。由此,面向移动应用的错误定位任务完成。本方法在移动应用中表现出了比传统方法更好的性能。

【技术实现步骤摘要】
基于提交信息的移动应用错误定位方法
本申请属于计算机科学与技术,软件工程领域。
技术介绍
过去的错误定位方法主要应用在传统桌面软件上,因此并没有考虑到移动应用(即MobileApps)所具备的特性。这些特性包含较少数量的历史缺陷报告以及较少的缺陷细节(比如程序实体名等信息)描述。它们会导致过去在桌面软件上所适用的方法并不能够适用在移动应用中。举例来说,两阶段模型和BugLocator这两种过去的方法都需要依靠大规模的历史缺陷报告。而BLUiR则需要充分的缺陷细节描述信息。在这种情况下,如果将过去的方法应用在移动应用中则会导致性能的严重下降。
技术实现思路
:为了解决上述现有方法应用在移动应用中会导致性能严重下降等问题,实现面向移动应用的错误定位技术,每一个新的缺陷报告(包含题目和描述等)作为查询条件用来搜索错误发生的源码文件。在技术的实现过程中,历史缺陷报告,源码文件以及提交信息等数据源用来完成缺陷定位的任务。为解决上述问题,本专利技术提供的基于提交信息的移动应用错误定位方法技术方案为:首先,摘要语法树技术将所有的候选源码文件构建成结构化文档。其次,通过对缺陷报告,候选源码文件以及提交信息进行预处理,结构化及非结构化索引被建立。历史缺陷报告和提交信息之所以被作为非结构化索引,是因为它们不包含任何域。然后,BM25F用来计算查询条件和候选源文件结构化索引的相似度;BM25用来分别计算查询条件与提交信息和历史缺陷报告的非结构化索引的相似度。最后,通过融合以上的相似度,错误定位方法将返回查询条件所描述的错误的源文件列表。由此,面向移动应用的错误定位任务完成。所述提交信息,是指开发者提交信息,英文名称为commitmessage。是指开发者变更代码时向系统提交的相关修改信息。上述技术方案具体的为:1)提取候选源码文件结构化信息:用Java语言分析工具EclipseJavaDevelopmentTools(JDT)来创建每一个候选源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息,最后每一个候选源码文件的结构化信息保存在一个.xml的结构化文档中;所述结构化信息为类名、方法名、变量名或代码注释中的一种或多种;源码文件中的结构化信息(即类名,方法名,变量名,代码注释)可以提升错误定位的精确率,因此有必要提取该类信息并用来设计新的面向移动应用的错误定位方法。Java语言分析工具EclipseJavaDevelopmentTools(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)所述自然语言处理技术是使用NaturalLanguageToolkit(NLTK)通过提供多种程序接口来关联文本处理库来实现的;所述所述预处理包括分词,停止词去除以及归根化。进一步地,步骤3)所述计算查询条件与候选源码文件的相似度的方法为:利用信息检索模型OkapiBM25来排序候选源码文件;该模型包括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为调节参数,用来控本文档来自技高网...

【技术保护点】
1.基于提交信息的移动应用错误定位方法,其特征在于:包含以下步骤:1)提取候选源码文件结构化信息:用Java语言分析工具来创建每一个候选源码文件的摘要语法树,然后通过遍历摘要语法树的所有节点提取相应的结构化信息,最后每一个候选源码文件的结构化信息保存在一个.xml的结构化文档中;所述结构化信息为类名、方法名、变量名或代码注释中的一种或多种;2)对文档进行预处理和建立索引:利用自然语言处理技术对文档进行预处理,将预处理后的输出作为历史缺陷报告、候选源码文件以及提交信息的索引,在索引中,历史缺陷报告和提交信息均与候选源码文件关联,该关联关系通过GitHub项目仓库中的信息进行挖掘得出;所述文档为历史缺陷报告,步骤1)所得结构化文档以及提交信息;3)对候选源码文件进行排序和检索:当给定一个新的缺陷报告,即查询条件时,错误发生源码文件的检索过程开始;计算查询条件与候选源码文件的相似度,查询条件与历史缺陷报告的相似度,以及查询条件与提交信息的相似度,通过融合计算得到的相似度,在索引中定位该缺陷发生的位置,检索出错误发生源码文件。

【技术特征摘要】
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)所述自然语言处理技术是使用NaturalLanguageToolkit通过提供多种程序接口来关联文本处理库来实现的;所述预处理包括分词,停止词去除以及归根化。4.根据权利要求1所述的方法,其特征在于:步骤3)所述计算查询条件与候选源码文件的相似度的方法为:利用信息检索模型OkapiBM25来排序候选源码文件;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时表示词权...

【专利技术属性】
技术研发人员:张涛
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:黑龙江,23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1