【技术实现步骤摘要】
一种面向缺陷定位的代码搜索方法
本专利技术属于软件维护领域,特别是一种面向缺陷定位的代码搜索方法。
技术介绍
在软件开发和维护的过程中,许多项目每天要面临大量bug,例如Mozilla平均每天接收152条新的bug报告,IBMJazz项目平均每天接收105条新的bug报告,开发维护人员需要花费大量的时间在bug定位和解决上,因此越来越多的bug定位工具被开发用来辅助开发者快速解决bug相关问题。目前,有许多基于信息检索模型的bug定位器被广泛使用,这些检索模型有VectorSpaceModel(VDM)、LatentSymanticIndexing、LatentDirichletAllocation(LDA)等。其中,Lukis等人运用LDA模型来进行bug定位,基于Mozilla上bug报告数据,他们使用LSI和LDA模型,在源代码的标识符和注释上构建两个分类器,使用余弦和条件概率相似性计算bug报告和源代码实体之间的相似性,进而推荐与bug报告最为相似的源代码实体。但是,该方法只是从语义和特征两方面来处理代码,代码和bug报告之间的联系局限于语义层面,这种处理 ...
【技术保护点】
1.一种面向缺陷定位的代码搜索方法,其特征在于,包括以下步骤:步骤1、对软件历史库中的bug报告进行自然语言预处理,并构建bug报告对应的源代码文件抽象语法树;步骤2、提取所有与bug相关的codediff文件,并将codediff文件中连续的代码修改行定义为一个chunk;在步骤1源代码文件抽象语法树的基础上建立每个codediff文件的chunk关系图;步骤3、遍历chunk关系图,获取chunk关系图中每个节点v的重要性分值degree,并对degree进行标准化处理;步骤4、根据bug报告与codediff文件之间的一对多关系以及每个codediff文件的chunk ...
【技术特征摘要】
1.一种面向缺陷定位的代码搜索方法,其特征在于,包括以下步骤:步骤1、对软件历史库中的bug报告进行自然语言预处理,并构建bug报告对应的源代码文件抽象语法树;步骤2、提取所有与bug相关的codediff文件,并将codediff文件中连续的代码修改行定义为一个chunk;在步骤1源代码文件抽象语法树的基础上建立每个codediff文件的chunk关系图;步骤3、遍历chunk关系图,获取chunk关系图中每个节点v的重要性分值degree,并对degree进行标准化处理;步骤4、根据bug报告与codediff文件之间的一对多关系以及每个codediff文件的chunk关系图,建立bug报告与chunk之间的关系;步骤5、结合步骤1的bug报告和步骤4建立的bug报告和chunk之间的关系,利用知识库建立工具建立bug-chunk知识库;步骤6、针对新的bug报告,获取新的bug报告与bug-chunk知识库中bug报告的相似度sim;步骤7、结合bug-chunk知识库中各个chunk的重要性分值degree和相似度sim生成chunk列表,根据chunk列表即可获取与新的bug报告中bug相关的代码,实现缺陷的定位。2.根据权利要求1所述的面向缺陷定位的代码搜索方法,其特征在于,步骤1中所述自然语言预处理包括文本规范化、去停词和词干化。3.根据权利要求1或2所述的面向缺陷定位的代码搜索方法,其特征在于,步骤1所述构建bug报告对应的源代码文件的抽象语法树,具体为:步骤1-1、利用软件开发工具包构建代码文件解析工具;步骤1-2、提取bug报告对应的源代码文件,并将该源代码文件作为所述代码文件解析工具的输入,从而解析出源代码文件的抽象语法树。4.根据权利要求3所述的面向缺陷定位的代码搜索方法,其特征在于,步骤2所述在步骤1源代码文件抽象语法树的基础上建立每个codediff文件的chunk关系图,具体为:对于每个codediff文件,将源代码文件...
【专利技术属性】
技术研发人员:孙小兵,常建明,张庆辉,
申请(专利权)人:扬州大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。