一种Hunk内的行差异分析方法及展示

来源 :齐鲁工业大学 | 被引量 : 0次 | 上传用户:qingshuiyilian
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件的开发和维护过程中,每天会有大量的代码变更被提交到版本管理平台中,而阅读和理解代码的变更是软件开发过程的必要工作,人工的对于变更代码差异的识别也越来越困难。当今软件功能的需求越来越多样化,软件的体系结构也随之增大,如果能够对代码的变更进行自动差异比较分析,则能够将代码变更的差异从源代码中分离,有助于对代码变更的阅读和理解,同时有助于开发人员研究代码变更中相关问题,有利于理解软件演化的过程。当前人工理解代码变更主要在文本差异化分析(textual code differencing)工具提供的Hunk集上进行,而有些工具还对每个Hunk进行二次差异化分析,并将结果展现在并排(side-by-side)的视图中,从而方便用户查看Hunk内部的变更。然而现有的二次差异化分析工具得到的结果普遍存在语句失配问题,即Hunk内部删除行与添加行之间的不恰当匹配以及配对的语句内部Token的拆分问题,影响理解事实的变更。首先,对代码差异失配问题的分布进行了调查研究,事实证明了该问题在二次差异化分析中的普遍性;然后,对该失配问题产生的原因进行了分析,并提出了一种对其改进的算法;最后,在设计的基于Eclipse插件的展示工具中将结果进行差异展示,并对该算法工具在开源项目上进行了实验验证。该算法基于轻语法分析,首先对版本源文件进行粗粒度上的文本差异化算法的分析,得到版本源文件的变更Hunk集,然后将集合的每一个Hunk中的文本行映射为语句行,并将语句行识别为基于单词(Token)的序列,其次对所有的删除语句和添加语句进行相似性匹配,对于匹配的语句应用最长公共子序列算法获取其内部的差异单词(Token)。在语句间相似性匹配和语句内差异化分析时均是以一个单词(Token)为最小比较单位。算法当前采用Java语言实现,并在一个自制的eclipse展示插件中对其结果予以展示。通过在五个开源项目上的实验,证明了该算法可以有效克服Hunk内语句行之间的失配以及Token的拆分问题。差异分析结果表明,该算法的整体的差异分析的准确率在83%~87%之间,其中对于Kdiff3工具分析存在问题的数据的准确率在70%~78%之间,同样对Beyond Compare4的准确率在71%~76%之间。
其他文献
本论文主要以ZnO光催化材料为基础,然后与其他半导体、金属或碳材料形成复合材料。通过引入不同类型的材料来改善氧化锌的性能,增加氧化锌的应用。第一章,首先介绍了半导体光催化技术的研究意义,其次详细探讨了半导体光催化的应用,然后是ZnO的基本性质及需要改善的问题,最后提出了以ZnO为基体与其他材料复合形成各种异质结增强光催化性能的方法。第二章,制备了ZnO@ZnS异质结。ZnO纳米棒组成的花通过一步水
近年来,聚合物材料成为了人类生活中难以取代的重要组成部分。同时,聚合物材料难以降解,对环境造成了巨大的污染,因此,研发可降解聚合物材料是十分重要的。基于手性氨基酸合成的聚酯酰亚胺(PEI)是一种良好的聚合物材料,它有着良好的热性能和机械性能,氨基酸的引入使它拥有了优异的溶解性和生物降解性。本文的主要任务是通过改变引入氨基酸的结构和构型来探究PEI热性能和降解性能以及影响它们的因素。本文的主要工作分
随着光电子器件的逐步成熟和工程需求的持续推动,新一代的以分布反馈式光纤激光器(Distributed feedback-fiber laser,DFB-FL)作为传感元件的光纤传感器应运而生,近年来,因其具有抗电磁干扰、体积小、线宽窄、功率高、灵敏度高等特性成为了光纤传感领域的重要研究方向。采用DFB-FL进行声传感,可以实现较宽频带范围内空气声信号的探测,具有传输距离远、灵敏度高、隐蔽性好、环境
心房颤动(Atrial Fibrillation,AF)在临床上表现为颤动或不规则的心跳(心律失常),是许多心脏异常的诱发因素之一,具有高致残率和高死亡率。因此,心房颤动的精准识别具有重要意义。目前所使用的房颤检测方法主要为基于波形特征和深度神经网络的检测方法。基于波形特征的方法存在手工提取困难,P波不易检测等问题,使得房颤检测准确率一般、效率低下。基于深度神经网络的方法与深度神经网络的层数之间具
由于实际系统大多数是非线性的,如何处理非线性系统一直是研究的热点。随着模糊理论的发展,模糊控制理论用来处理非线性系统受到诸多研究人员的青睐,如T-S模糊模型能于任意精度逼近一个光滑且有界的非线性函数,将非线性系统描述为一组局部线性模型的凸组合。对于模糊系统的控制综合已进行深入研究并取得重要成果,如控制器设计、H_∞控制等,大多集中于状态反馈,然而实际系统中一些状态很难被测量或者测量的成本很高,因此
本文针对如何更好的建模上下文进行了研究。在上下文的建模和利用中存在着一些问题,本文针对低质量上下文、模糊上下文和缺失上下文三个方面进行了提高上下文质量、模糊本体建模和补全缺失上下文的研究。然后分别将它们应用在了光伏发电预测、文献摘要、文献检索的领域。研究内容如下:研究内容1:对于低质量上下文,本文提出了一种新的方法来建立了高质量本体模型,该本体模型可提高上下文质量。该本体先将上下文按照其来源的不同
心血管病已经成为威胁人类生命健康的主要疾病之一。临床上,心血管病经常伴有心律失常现象发生。有些心律失常可能导致心脏病的症状,包括头晕、昏倒和呼吸急促,还有些类型的心律失常,如房颤和心室颤动,可能会引起中风和心脏骤停,因此及时准确检测心律失常是紧急且必要的。心电信号(ECG)作为一种表征心脏状况的生理信号,对心律失常的检测和诊断具有重要意义。但由于医学数据的特殊性,其标注成本高,许多数据标注的不完全
随着互联网的迅速普及,如何有效地组织、利用以及挖掘数据背后隐含的知识成为一种新的挑战。知识图谱描述了客观世界所存在的实体及语义关联等,并以图结构直观地呈现,为用户提供了结构化的知识,逐渐获得了学术界和工业界的普遍关注,因此如何构建一个知识图谱成为学者们研究的热点。同时多源异构的知识之间往往会存在重复、语义歧义多样、质量参差不齐等问题,要想构建一个高质量的知识图谱,知识融合是不可或缺的关键环节。实体
DNA序列中储存着大量复杂且有价值的生物信息,其中DNA序列的相似性分析可以发现生物之间的进化关系,从而更好地处理生物信息;DNA序列的模式匹配可以统计基因片段出现的位置和数目,有利于对致病基因进行状态跟踪和靶向治疗。但是大多数序列相似性分析和模式匹配方法都针对整个序列而不是频繁序列模式,这就加大了计算的复杂度;并且目前的研究方法均忽略了含缺失碱基的基因片段,即对于负序列模式,还没有统一的分析方法
人脸检测在生产生活中使用越来越广泛,人脸检测安全性问题逐渐成为社会关注要点。人脸攻击导致经济损失事件频频发生,攻击方式主要包括打印照片攻击、屏幕成像攻击、视频回放攻击和假体攻击等,因此在人脸识别中使用活体检测技术越来越重要。随着攻击方式越来越多,人脸活体检测面临越来越大的压力,现今主要使用的活体检测方式比较单一,在复杂环境下准确性和鲁棒性往往达不到要求。在保证模型检测性能基础上还需要考虑模型推理时