[发明专利]一种基于问答网站分析的程序崩溃缺陷自动修复方法在审
申请号: | 201510708750.9 | 申请日: | 2015-10-27 |
公开(公告)号: | CN105335246A | 公开(公告)日: | 2016-02-17 |
发明(设计)人: | 高庆;张汉生;王杰;熊英飞;张路;梅宏 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/36 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李官 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 问答 网站 分析 程序 崩溃 缺陷 自动 修复 方法 | ||
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于问答网站分析的程序崩溃缺陷自动修复方法。
背景技术
计算机系统在执行应用程序的进程的过程中,不可避免的会由于该应用程序的进程自身的原因,比如除零错误、堆栈溢出、内存越界或空指针等原因,导致在执行应用程序的进程时发生程序崩溃,一旦程序发生崩溃,人们将无法继续使用该应用程序,给用户的工作和生活带来诸多不便。因此,某一应用程序崩溃后的自我修复能力对于该应用程序而言也是一个非常重要的因素。
目前,现有的程序崩溃缺陷相关的技术主要针对崩溃缺陷的定位、恢复以及修复检查这几个方面,具体说明如下:第一方面:通过堆栈信息定位到程序崩溃出错语句,但是这种方法仍然需要开发人员通过理解代码人工写出修复补丁;第二方面:令应用程序从崩溃状态恢复到可继续执行的状态,使程序继续运行,但这种方法并未从根本上解决崩溃的修复问题,并且存在额外的运行开销;第三方面:在开发人员修复崩溃缺陷后对程序崩溃的修复进行检查,自动预测是否会有新的崩溃发生,然而这类方案并不涉及应用程序的自动修复。
综上所述,现有技术中修复应用程序崩溃的方法仍然依赖开发人员的操作,导致开发人员的工作量增加。
发明内容
本发明要解决的技术问题是:应用程序在发生崩溃时如何不依赖人员操作自我修复的问题。
为实现上述的发明目的,本发明提供了一种基于问答网站分析的程序崩溃缺陷自动修复方法,包括:
根据程序发生崩溃时生成的崩溃踪迹,获取多个相关网页;
其中,所述相关网页中包含描述所述崩溃的缺陷代码以及修复所述崩溃的修复代码;
在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段;根据所述缺陷代码片段以及修复代码片段生成用于修复所述崩溃的编辑脚本;
根据所述崩溃踪迹以及缺陷代码,确定所述程序源代码中有错误代码的位置,应用所述编辑脚本修复所述错误代码。
其中较优地,所述获取多个相关网页,是获取多个问答网站中的相关网页。
其中较优地,
所述问答网站相关网页中的提问贴包含所述缺陷代码;
所述问答网站相关网页中的答案贴包含所述缺陷代码和修复代码。
其中较优地,所述在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段为:
在所述答案贴中提取缺陷代码片段以及修复代码片段。
其中较优地,所述在每个所述相关网页中,提取所述缺陷代码的片段以及修复代码的片段为:
在所述提问帖中提取所述缺陷代码的片段;
在所述答案贴中提取所述修复代码片段。
其中较优地,所述根据所述缺陷代码片段以及修复代码片段生成用于修复所述崩溃的编辑脚本,包括:
将所述缺陷代码的片段与修复代码片段组成代码片段对;
在所述代码片段对中,计算所述缺陷代码片段的语句相似度和修复代码片段语句相似度,过滤掉相似度小于预设阈值的所述语句;
构建过滤后的所述代码片段对中所述缺陷代码的片段和修复代码片段之间的映射,根据所述映射生成所述缺陷代码的片段和修复代码片段之间的所述编辑脚本。
其中较优地,所述根据所述崩溃踪迹以及缺陷代码,确定所述程序源代码中有错误代码的位置,应用所述编辑脚本修复所述错误代码,具体包括:
提取所述崩溃踪迹中发生崩溃的文件的文件名,形成文件集合;
根据所述崩溃踪迹中包含的所述文件的行号,确定所述文件在源代码中的位置,并提取所述文件的源代码片段;
计算所述源代码片段中语句的相似度,过滤所述相似度小于预设阈值的所述源代码片段语句;
构建所述缺陷代码片段与所述程序源代码片段的映射关系;
将所述编辑脚本中所述缺陷代码片段的元素,按所述缺陷代码片段与程序源代码片段的映射关系,替换为所述程序源代码中的相应元素;
将编辑脚本中的所述替换的所述程序源代码元素,按所述缺陷代码的片段和修复代码片段之间的映射关系,替换为相应的修复代码片段中的元素,生成替换代码补丁;
将所述替换代码补丁带回所述程序源代码中。
其中较优地,所述缺陷代码片段以及修复代码片段为多个,相应地,根据缺陷代码的片段和修复代码片段生成的替换代码补丁也为多个。
其中较优地,还包括:
将多个所述替换代码补丁中相同的补丁合并;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510708750.9/2.html,转载请声明来源钻瓜专利网。