[发明专利]一种面向缺陷定位的代码搜索方法有效
申请号: | 201811412576.3 | 申请日: | 2018-11-26 |
公开(公告)号: | CN109558166B | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 孙小兵;常建明;张庆辉 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/41 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 马鲁晋 |
地址: | 226009 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 缺陷 定位 代码 搜索 方法 | ||
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文件,将源代码文件抽象语法树上与该codediff文件中chunk相关的节点保留,并将代码文件抽象语法树上的节点用chunk表示,由此建立每个codediff文件的chunk关系图。
5.根据权利要求1所述的面向缺陷定位的代码搜索方法,其特征在于,步骤4所述获取chunk关系图中每个节点v的重要性分值degree,所有公式为:
degree=BC+CC
式中,BC为经过节点v的某一对节点之间的最短路径数目与该对节点之间所有最短路径的数目的比值,CC为节点v与其他节点之间最短路径之和。
6.根据权利要求5所述的面向缺陷定位的代码搜索方法,其特征在于,步骤4所述对degree进行标准化处理,具体为:对degree进行归一化处理,即将degree的值限定于区间(0,1)内,假设chunk关系图获得的degree数据集为{d1,d2,d3,…,dn},则对其进行标准化处理后为其中sum=d1+d2+d3+…+dn。
7.根据权利要求1所述的面向缺陷定位的代码搜索方法,其特征在于,步骤5所述知识库建立工具采用Neo4j图形知识库建立工具。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811412576.3/1.html,转载请声明来源钻瓜专利网。