基于抽象语法树分析的版本控制分支合并算法
作者:

Revision Control Branch Merging Algorithm Based on AST
Author:
  • 摘要
  • | |
  • 访问统计
  • |
  • 参考文献 [18]
  • |
  • 相似文献 [20]
  • |
  • 引证文献
  • | |
  • 文章评论
    摘要:

    在软件开发中, 并行开发已经成为了现实中标准的开发模式, 因此软件开发的版本控制在开发过程中得到了非常广泛的应用. 虽然大多数的版本控制工具都能完成分支合并以及将不同版本的更改合并起来, 但这些工具往往是以一行一行的代码为单位进行文本比较的合并, 在遇到某行被同时修改时, 则不能给出满意的合并结果. 给出了一种新的合并算法, 用来解决文本比较分支合并中的问题, 它在传统工具的文本比较出现冲突的代码行, 对该代码块建立抽象语法树, 根据抽象语法树的分析比较, 完成不同分支版本代码的自动合并, 减少分支合并中的代码冲突及手动合并的工作量, 提高开发效率.

    Abstract:

    Software Development, where developers work together parallelly is the standard develop mode actually, needs the revision control tool to assistance the development widely. Most of the tools today could merge the code changes from different branches edited by different developers. These tools are based on code text differ comparation line by line, and the merged code isn't always the prediction of the developers. This paper presents a new branch merging algorithm which intends to provide a better result. We build an abstract syntax tree of the code block where the traditional merge gives a code confliction. Then we merge this code block of different revisions automately based on AST nodes comparative analysis. In this way, the code conflictions and manual work in branch merging could be reduced. At the same time, the development efficiency would be improved.

    参考文献
    1 高传平,谈利群,宫云战.基于抽象语法树的代码静态自动测试方法研究.北京化工大学学报(自然科学版),2007,S1: 24-29.
    2 张丽萍,刘东升.一种基于AST的代码抄袭检测方法.计算机应用研究,2011,12:4616-4621.
    3 刘楠,韩丽芳,等.一种改进的基于抽象语法树的软件源代码比对算法.信息网络安全,2014,1:38-43.
    4 张玉州,王一宾,江克勤.抽象语法树在属性计算中的应用.安庆师范学院学报(自然科学版),2008,4: 84-89.
    5 廖兴,尹俊文,蔡放.基于Java语言的抽象语法树的创建与遍历.长沙大学学报,2004,4:50-54.
    6 于冬琦,彭鑫,赵文耘.使用抽象语法树和静态分析的克隆代码自动重构方法.小型微型计算机系统,2009,9:1752-1761.
    7 Wang QQ, Rong LL, Kai Y. A pushouts based knowledge merging method: Knowledge reorganization in emergency decision-making support. Wireless Communications, Networking and Mobile Computing(WiCOM'08). 2008. 1-4.
    8 http://git-scm.com/docs/git-merge
    9 http://en.wikipedia.org/wiki/Merge_(revision_control)
    10 James J. Hunt Extensible language-aware merging. ICSM'02. 2002
    11 Hayase Y, Matsushita M, Inoue K. Revision control system using delta script of syntax tree. International Workshop on Software Configuration Management. 2005. 133-149.
    12 Appel S, Liebeg J, Brandl B. Semistructured merge: Rethinking merge in revision control systems. 19th ACM SIGSOFT Symposium and the 13th European Conference on the Foundations of Software Engineering. 2011. 190-200.
    13 杨君.一种新的多版本增创算法.计算机学报,2008, 4(31):702-707.
    14 刘峰.针对有向无环图结构的多版本分布模式优化.计算机工程,2011.11(37):74-77.
    15 www.antlr.org.
    16 高灿,侯秀萍,孙士明.基于抽象语法树的修改影响分析方法.长春工业大学学报(自然科学版),2012,4(33):387-391.
    17 http://www.linuxcommand.org/man_pages/diff31.html.
    18 Munson JP. A Flexible Object Merging Framework. CSCW 94-10/94, ACM 0-89791-689-1/94/0010. 1994.
    网友评论
    网友评论
    分享到微博
    发 布
引用本文

李郑,李姝,王俊,刘士进.基于抽象语法树分析的版本控制分支合并算法.计算机系统应用,2015,24(3):139-146

复制
分享
文章指标
  • 点击次数:1599
  • 下载次数: 4124
  • HTML阅读次数: 0
  • 引用次数: 0
历史
  • 收稿日期:2014-06-24
  • 最后修改日期:2014-08-11
  • 在线发布日期: 2015-03-04
文章二维码
您是第11224114位访问者
版权所有:中国科学院软件研究所 京ICP备05046678号-3
地址:北京海淀区中关村南四街4号 中科院软件园区 7号楼305房间,邮政编码:100190
电话:010-62661041 传真: Email:csa (a) iscas.ac.cn
技术支持:北京勤云科技发展有限公司

京公网安备 11040202500063号