Git仓库代码演化过程中的注解定位技术研究
发布时间:2020-11-10 09:24
在团队协作开发过程中,开发成员在向Git仓库提交代码时,可能需要在不改变源代码内容和结构的情况下对代码添加一些注解,备注修改缘由,便于项目负责人审核。同时,也希望开发成员可以对代码中难以理解、易混淆的核心业务逻辑添加图片、伪算法和超链接等复杂的注解,并可以将历史注解自动重新定位到新版本文件中对应的代码位置,实现一次注解,永久有效。目前,在软件开发过程中,代码中经常出现不添加注释、注释不规范等问题,导致代码冗余和结构混乱,降低了源代码的可读性和程序的可维护性。而且,国内外比较流行的代码托管平台GitHub或者Git@OSC本身并没有提供一种非侵入式、可重定位的代码注解功能,无法解决上述可能出现的问题。同时对使用代码托管平台Gitplex的企业合作用户进行访问调查,结果表明项目负责人一致认同此功能。基于上述问题和需求,本文基于Git仓库的历史记录和修订追踪功能,提出了一种字符串转换的文本diff注解定位技术。首先使用字符串前缀匹配算法、后缀匹配算法对仓库中的两个历史版本文件进行文本diff标记。同时将行级字符串转换为一个char类型字符,提高文本diff的性能和注解定位的准确性;使用局部性原理矫正注解定位可能出现的定位错误;使用缓存技术提高文本diff的性能。最后,本文制定了对比实验方案,验证四种注解定位技术的性能优异。大量的实验结果表明,本文研究的注解定位技术在运行时间和正确率两方面上的性能更优异。目前,该注解定位技术已经应用在基于代码托管平台Gitplex开发的注解系统中,运行良好,性能优异。
【学位单位】:南京邮电大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP311.52
【部分图文】:
和已提交(Unmodify)。未追踪表示 Git 仓库文件夹中的文件没有提交到仓库中,无法进行版本管理;已修改表示该文件已经修改,可以使用 git add 命令添加到暂时缓存区,或者使用 gitcheckout 命令放弃已修改的内容,还原到已提交状态;已暂存表示已经使用 git add 命令添加到暂时缓存区,如果使用 commit 命令将提交到本地仓库;已提交表示该文件与本地仓库中的文件状态一致,没有被修改。2.3.3 提交原理每向 Git 仓库提交(commit)一次就完整复制一次项目中的每个文件,所以可以查看或者回退到任何一个历史版本而不会丢失任何数据。如果提交变更的文件时,会为该文件生成一个新的 Blob 对象,并将其保存到仓库中,同时会为该文件生成一个唯一的 SHA-1 校验和,并将其指向该文件。对于已提交(Unmodify)的文件,直接使用当前历史版本的 SHA-1 校验和指向该文件。下图 2.4 详细展示了版本控制系统 Git 的提交原理。
注解定位技术分析与评估注解定位技术主要涉及两个核心概念,一个是注解,与注解系统有关;另外一个是定位,与文本匹配技术有关。本章节将会介绍并分析讨论与上述两大核心概念相关的背景知识。2.5.1 注解系统注解系统是一个依托于代码托管服务平台的第三方系统,主要用于提供非侵入式、可自动重定位的注解功能。该系统目前主要有注解添加、注解重定位和注解内容可视化三大功能。该系统的注解添加功能十分强大,提供了多种注解内容添加方式,包括伪算法、图片和超链接等。注解系统界面简洁、操作简单,可以十分方便地实现非侵入式注解功能。目前,该系统已经应用在代码托管服务平台 Gitplex 上面,运行状况良好,性能优异。下图 2.2 是截取了部分注解系统与 Gitplex 集成后的界面显示效果图。
上一章的 2.5 章节中对三种注解定位技术进行了分析与评估,了解到它们本身都有各自的局限性,因而无法将它们应用到注解系统生产环境中,将代码演化过程中历史版本文件中的注解重新定位到新版本文件中的对应代码位置上。故而在本章节中,我们提出了一种基于字符串转换的文本 diff 注解定位技术,它不仅解决了上一章节中基于正则表达式的注解定位技术和基于编程语言循环语法的注解定位技术因没有进行上下语义匹配导致注解重定位错误的问题,同样解决了基于 google-diff-match-patch 的注解定位技术因 diff 标记结果分析复杂导致错误率较高的问题。总体概览本章节首先从注解定位的整体执行过程介绍基于字符串转换的文本 diff 注解定位技术,让大家对该技术有一个总体认识,然后将介绍该技术核心业务逻辑中的核心算法。具体执行流程图如图 3.1 所示:
【参考文献】
本文编号:2877771
【学位单位】:南京邮电大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP311.52
【部分图文】:
和已提交(Unmodify)。未追踪表示 Git 仓库文件夹中的文件没有提交到仓库中,无法进行版本管理;已修改表示该文件已经修改,可以使用 git add 命令添加到暂时缓存区,或者使用 gitcheckout 命令放弃已修改的内容,还原到已提交状态;已暂存表示已经使用 git add 命令添加到暂时缓存区,如果使用 commit 命令将提交到本地仓库;已提交表示该文件与本地仓库中的文件状态一致,没有被修改。2.3.3 提交原理每向 Git 仓库提交(commit)一次就完整复制一次项目中的每个文件,所以可以查看或者回退到任何一个历史版本而不会丢失任何数据。如果提交变更的文件时,会为该文件生成一个新的 Blob 对象,并将其保存到仓库中,同时会为该文件生成一个唯一的 SHA-1 校验和,并将其指向该文件。对于已提交(Unmodify)的文件,直接使用当前历史版本的 SHA-1 校验和指向该文件。下图 2.4 详细展示了版本控制系统 Git 的提交原理。
注解定位技术分析与评估注解定位技术主要涉及两个核心概念,一个是注解,与注解系统有关;另外一个是定位,与文本匹配技术有关。本章节将会介绍并分析讨论与上述两大核心概念相关的背景知识。2.5.1 注解系统注解系统是一个依托于代码托管服务平台的第三方系统,主要用于提供非侵入式、可自动重定位的注解功能。该系统目前主要有注解添加、注解重定位和注解内容可视化三大功能。该系统的注解添加功能十分强大,提供了多种注解内容添加方式,包括伪算法、图片和超链接等。注解系统界面简洁、操作简单,可以十分方便地实现非侵入式注解功能。目前,该系统已经应用在代码托管服务平台 Gitplex 上面,运行状况良好,性能优异。下图 2.2 是截取了部分注解系统与 Gitplex 集成后的界面显示效果图。
上一章的 2.5 章节中对三种注解定位技术进行了分析与评估,了解到它们本身都有各自的局限性,因而无法将它们应用到注解系统生产环境中,将代码演化过程中历史版本文件中的注解重新定位到新版本文件中的对应代码位置上。故而在本章节中,我们提出了一种基于字符串转换的文本 diff 注解定位技术,它不仅解决了上一章节中基于正则表达式的注解定位技术和基于编程语言循环语法的注解定位技术因没有进行上下语义匹配导致注解重定位错误的问题,同样解决了基于 google-diff-match-patch 的注解定位技术因 diff 标记结果分析复杂导致错误率较高的问题。总体概览本章节首先从注解定位的整体执行过程介绍基于字符串转换的文本 diff 注解定位技术,让大家对该技术有一个总体认识,然后将介绍该技术核心业务逻辑中的核心算法。具体执行流程图如图 3.1 所示:
【参考文献】
相关期刊论文 前2条
1 王伟;刘渊;张春瑞;文平;谢家俊;;上下文不一致性缺陷的检测[J];计算机科学;2015年S1期
2 柳厅文;孙永;卜东波;郭莉;方滨兴;;正则表达式分组的1/(1-1/k)-近似算法[J];软件学报;2012年09期
相关硕士学位论文 前1条
1 姜英杰;支持正则表达式的文本匹配优化算法[D];东北大学;2012年
本文编号:2877771
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2877771.html