【技术实现步骤摘要】
基于模板的并发缺陷修复系统及方法
[0001]本专利技术属于软件安全领域,特别涉及一种基于模板的并发缺陷修复系统及方法。
技术介绍
[0002]随着计算机软件技术的发展,并发程序正广泛应用于软件系统的开发过程中。由于其内在的并发性、线程调度的不确定性和代码规模的庞大,并发程序易于遭遇并发缺陷。并发缺陷通常会导致程序或系统陷入一种不确定的运行状态,甚至带来系统崩溃等严重问题,造成巨大的经济损失。然而,并发缺陷往往暴露在罕见且特定的交错执行中,开发人员很难有效、高效地检测并修复它们。因此,对并发缺陷修复的研究已经成为近年来学术界和工业界的热点问题。当开发人员面临大量并发缺陷时,如果能够根据缺陷代码以及修复代码挖掘出相关的修复模板,则可以大幅提高开发人员修复并发缺陷的效率。
[0003]目前,已有的并发缺陷修复工作大多通过动态或静态地插入门锁,以序列化并发缺陷中涉及的所有线程的执行。如文献《G.Jin,L.H,Song,W.Zhang,S.Lu,B.Liblit.Automated atomicity
‑
...
【技术保护点】
【技术特征摘要】
1.一种基于模板的并发缺陷修复系统,其特征在于,包括:数据集采集模块,用以通过爬取开源缺陷跟踪系统中开源项目的缺陷报告,检索并筛选所有与并发相关的缺陷,并提取对应的补丁文件;富编辑脚本计算模块,用以将所述补丁文件转化为特殊的变更树表示;修复模板提取模块,用以通过比较变更树的相似度来提取修复模板;并发缺陷修复模块,用以把所述修复模板和已知缺陷代码行号的待修复文件作为输入进行模板匹配,匹配成功后通过重构源码完成并发缺陷的修复。2.根据权利要求1所述的基于模板的并发缺陷修复系统,其特征在于:在数据集采集模块中:以类型为“缺陷”,状态为“已解决”、“已修复”和“已关闭”,爬取开源缺陷跟踪系统Bugzilla中开源项目的缺陷报告;以“并发的”、“并发性”、“死锁”、“原子性违背”、“数据竞争”、“资源竞争”、“顺序违背”、“线程安全”、多线程”以及“同步”作为关键词检索所述缺陷报告,筛选所有与并发相关的缺陷,并提取对应的补丁文件。3.根据权利要求2所述的基于模板的并发缺陷修复系统,其特征在于:在富编辑脚本计算模块中:将所述补丁文件使用GumTree计算出该补丁文件的抽象语法树AST的编辑操作序列并重新映射到程序AST中的相关节点;从GumTree编辑操作的节点开始,从下到上遍历已解析的程序AST,直到到达一个预定义的根节点,预定义的根节点类型如下:类型声明、域声明、方法声明、分支语句、抓取子句、构造器调用、父构造器调用或任何语句节点;对到达的预定义的根节点,从根节点到映射到GumTree编辑操作的叶节点之间提取AST子树;对提取的AST子树,创建有序序列,并将该有序序列存储为富编辑脚本;富编辑脚本描述了对一个给定的修复前的程序AST进行的操作,以将修复前的程序AST转换为修复后的程序AST,树中的每个节点都是受变更的代码影响的AST节点,富编辑脚本中的每个节点都包含三种不同类型的信息:形状、操作和令牌。4.根据权利要求3所述的基于模板的并发缺陷修复系统,其特征在于:在修复模板提取模块中:构建搜索索引,即一组比较子空间,为每次迭代分别定义一个搜索索引,依次得到形状索引、操作索引、令牌索引;其中,迭代的类型包括:形状、操作以及令牌;搜索索引的构建方法是将富编辑脚本按照标准进行分组,其中,这些标准依赖于不同迭代中所使用的变更树表示的嵌入信息;形状索引的构建是将富编辑脚本的形状树表示为输入,并根据该形状树的结构按照AST节点类型进行分组,具有相同根节点和相同深度的富编辑脚本被分为一组,对于每个组,通过枚举组成员的成对组合来创建一个比较空间;形状索引通过存储每个组的标识符来构建,表示为根节点/深度;操作索引的构建遵循与形状索引相同的原则,重新分组基于形状树的聚类输出,输入由富编辑脚本的操作树表示构成,每个比较空间的组标识符生成为根节点/深度/基于形状
树的聚类生成的id;令牌索引的构建遵循与操作索引相同的原则,重新分组基于操作树的聚类输出,输入由富编辑脚本的令牌树表示构成,每个比较空间的组标识符生成为根节点/深度/基于形状树的聚类生成的id/基于操作树的聚类生成的id;分别计算富编辑脚本的前两种表示的树编辑距离,即将一棵树转换为另一棵树的编辑操作序列,对于前两次迭代,即形状与操作,利用GumTree的编辑脚本算法,将两棵树作为输入,并生成编辑脚本,编辑脚本的大小即表示两棵树之间的树编辑距离,当树编辑距离为零时,输入的两棵树被认为是相同的,两棵相同的树被称为相同树对;为了提取修复模板,利用富编辑脚本的特殊的变更树表示的簇,从为每个迭代生成的相同树对开始,根据迭代提取相应的变更树表示,利用基于图中连接组件识别理论的聚类过程以找到一组相同的树,即簇;从树对集合中创建一个无向图,图中的节点表示树,边表示关联的树,即相同树对;在图中,将簇定义为子图,每个子图包含一组树,这组树彼此相同,互不关联,一个簇包含一个富编辑脚本集合,同一集合中的富编辑脚本共享一个公共的特殊树表示,当一个簇至少有两个成员时,该簇被限定为一个模板。5.根据权利要求4所述的基于模板的并发缺陷修复系统,其特征在于:在并发缺陷修复模块中:利用开源工具ANTLR将所述待修复文件解析为AST,源码中的空格、注释的内容也被ANTLR解析成对应类型的节点;修复模板的匹配是基于缺陷代码的AST上下文信息进行的,依次遍历可疑语句AST的每个节点,从可疑语句AST的第一个子节点到最后一个叶子节点,并尝试将每个节点与修复模板的上下文AST匹配,若一个节点可以匹配给出的任何缺陷上下文,则成功匹配相应的修复模板,若该节点非叶子节点,则继续遍历它的叶子节点;成功匹配修复模板后,对缺陷代码的AST上相应的节点进行插入、删除、更新、移动操...
【专利技术属性】
技术研发人员:薄莉莉,袁砚池,孙小兵,李斌,吴潇雪,
申请(专利权)人:扬州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。