[发明专利]一种基于问答网站分析的程序崩溃缺陷自动修复方法在审
申请号: | 201510708750.9 | 申请日: | 2015-10-27 |
公开(公告)号: | CN105335246A | 公开(公告)日: | 2016-02-17 |
发明(设计)人: | 高庆;张汉生;王杰;熊英飞;张路;梅宏 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/36 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李官 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 问答 网站 分析 程序 崩溃 缺陷 自动 修复 方法 | ||
1.一种基于问答网站分析的程序崩溃缺陷自动修复方法,其特征在于,包括:
根据程序发生崩溃时生成的崩溃踪迹,获取多个相关网页;
其中,所述相关网页中包含描述所述崩溃的缺陷代码以及修复所述崩溃的修复代码;
在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段;根据所述缺陷代码片段以及修复代码片段生成用于修复所述崩溃的编辑脚本;
根据所述崩溃踪迹以及缺陷代码,确定所述程序源代码中有错误代码的位置,应用所述编辑脚本修复所述错误代码。
2.如权利要求1所述的自动修复方法,其特征在于,所述获取多个相关网页,是获取多个问答网站中的相关网页。
3.如权利要求2所述的自动修复方法,其特征在于,
所述问答网站相关网页中的提问贴包含所述缺陷代码;
所述问答网站相关网页中的答案贴包含所述缺陷代码和修复代码。
4.如权利要求3所述的自动修复方法,其特征在于,所述在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段为:
在所述答案贴中提取缺陷代码片段以及修复代码片段。
5.如权利要求3所述的自动修复方法,其特征在于,所述在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段为:
在所述提问帖中提取所述缺陷代码的片段;
在所述答案贴中提取所述修复代码片段。
6.如权利要求4、5任意一项所述的自动修复方法,其特征在于,所述根据所述缺陷代码片段以及修复代码片段生成用于修复所述崩溃的编辑脚本,包括:
将所述缺陷代码的片段与修复代码片段组成代码片段对;
在所述代码片段对中,计算所述缺陷代码片段的语句相似度和修复代码片段语句相似度,过滤掉相似度小于预设阈值的所述语句;
构建过滤后的所述代码片段对中所述缺陷代码的片段和修复代码片段之间的映射,根据所述映射生成所述缺陷代码的片段和修复代码片段之间的所述编辑脚本。
7.如权利要求6的自动修复方法,其特征在于,所述根据所述崩溃踪迹以及缺陷代码,确定所述程序源代码中有错误代码的位置,应用所述编辑脚本修复所述错误代码,具体包括:
提取所述崩溃踪迹中发生崩溃的文件的文件名,形成文件集合;
根据所述崩溃踪迹中包含的所述文件的行号,确定所述文件在源代码中的位置,并提取所述文件的源代码片段;
计算所述源代码片段中语句的相似度,过滤所述相似度小于预设阈值的所述源代码片段语句;
构建所述缺陷代码片段与所述程序源代码片段的映射关系;
将所述编辑脚本中所述缺陷代码片段的元素,按所述缺陷代码片段与程序源代码片段的映射关系,替换为所述程序源代码中的相应元素;
将编辑脚本中的所述替换的所述程序源代码元素,按所述缺陷代码的片段和修复代码片段之间的映射关系,替换为相应的修复代码片段中的元素,生成替换代码补丁;
将所述替换代码补丁带回所述程序源代码中。
8.如权利要求7所述的自动修复方法,其特征在于,所述缺陷代码片段以及修复代码片段为多个,相应地,根据缺陷代码的片段和修复代码片段生成的替换代码补丁也为多个。
9.如权利要求8所述的自动修复方法,其特征在于,还包括:
将多个所述替换代码补丁中相同的补丁合并;
过滤掉多个所述替换代码补丁中出现编译错误的补丁;
根据所述过滤后的替换代码补丁判断修复结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510708750.9/1.html,转载请声明来源钻瓜专利网。