全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210719649.3 (22)申请日 2022.06.23 (71)申请人 南京邮电大 学 地址 210003 江苏省南京市 鼓楼区新模范 马路66号 (72)发明人 张卫丰 李贺彬 周国强 张迎周  王子元  (74)专利代理 机构 南京正联知识产权代理有限 公司 32243 专利代理师 杭行 (51)Int.Cl. G06F 11/07(2006.01) G06F 16/22(2019.01) G06F 16/23(2019.01) G06K 9/62(2022.01) (54)发明名称 一种基于diff代码块匹配的重复冲突方案 检测方法 (57)摘要 一种基于diff代码块匹配的重复冲突方案 检测方法, 对于具有大量历史合并代码的数据 库, 如从一个代码仓库 向另一个代码仓库迁移, 或一个代码库存在相似更新等现实场景, 利用大 量已经解决好合并问题的代码 仓库信息, 抽取出 相关的合并解决方案。 其次, 对于获取到历史合 并冲突的解决方案将其存储到数据库。 然后, 遇 到现有冲突的时候, 利用保存的冲突解决方案来 进行合并方案的推荐。 最后, 基于历史信息解决 的冲突, 将其在数据库中的是更新时间进行更 新。 权利要求书1页 说明书4页 附图3页 CN 115168085 A 2022.10.11 CN 115168085 A 1.一种基于diff代码块匹配的重复冲突方案检测方法, 其特征在于: 所述方法包括如 下步骤: 步骤1, 对于具有大量历史合并代码的数据库, 提取出提交树中所有合并节点, 然后判 断该节点是否含有历史冲突 合并信息; 步骤2, 使用图遍历算法和节点合并分析, 记录冲突节点的当前分支名, 合并到当前分 支的其他分支名, 合并到 当前分支的其他分支的前驱结点, 冲突节 点前驱的前驱节点, 合并 分支和待合并分支的祖 先节点, 并记录各个节点的提交标记; 步骤3, 获取祖先节点的参考代码块、 合并到当前分支的其他分支的前驱结点的对比代 码块、 当前节点的前驱的前去节点的源代码块、 冲突节点的合并代码块; 步骤4, 使用代码匹配技术, 提取代码块进行对比, 然后对于匹配成功的代码块通过 hash算法得到一个hash值, 作为一个冲突方案的记录维度, 然后将当前的仓库名, 各个节 点 的提交标志, 各个代码块的hash值、 更新时间保存到数据库中; 步骤5, 使用数据库索引快速匹配技术, 对现有冲突与保存的冲突方案进行匹配, 匹配 成功则将匹配到冲突方案返回给开发人员, 并且更新保存时间; 匹配失败则需要开发人员 自行解决合并冲突问题, 然后把当前合并冲突方案记录 到数据库中。 2.根据权利要求1所述的一种基于diff代码块匹配的重复冲突方案检测方法, 其特征 在于: 步骤1中, 在判断合并节点的同时, 通过提交树保存对比diff代码块、 源文件、 参考文 件、 合并文件 所在节点的commit  Id, 通过对commit  Id的保存可以定位到冲突文件, 记录好 仓库名称。 3.根据权利要求1所述的一种基于diff代码块匹配的重复冲突方案检测方法, 其特征 在于: 步骤2中, 使用图遍历算法和节点合并分析, 记录冲突节点的当前分支名, 合并到 当前 分支的其他分支名, 合并到 当前分支的其他分支的前驱结点, 冲突节点前驱的前驱节点, 合 并分支和待合并分支的祖 先节点, 并记录各个节点的提交标记。 4.根据权利要求1所述的一种基于diff代码块匹配的重复冲突方案检测方法, 其特征 在于: 步骤3中, 通过步骤2确定了当前节点是不是一个冲突节点, 然后循环步骤1中的节点 集合, 找到所有的含有冲突历史的合并节点, 然后为了能够定位历史合并冲突节点的具体 情况, 通过commit提交树保存对比diff代码块、 源diff代码块、 参考 diff代码块、 合并文件 所在节点的com mitId, 通过对com mitId的保存可以定位到冲突dif f代码块。 5.根据权利要求1所述的一种基于diff代码块匹配的重复冲突方案检测方法, 其特征 在于: 步骤4中, 将对比diff代码块、 源diff代码块、 参考diff代码块中的代码先进行匹配, 得到代码块不能完全匹配成功的代码块列 表, 对于列 表中的每一个代码块分别通过hash算 法, 得到一个代码块hash值; 由步骤1和步骤3得到仓库名和源代码块提交id、 对比代码块提 交id、 参考代码块提交id、 合并代码块提交id, 以及获取到源代码块的hash值、 对比代码块 的hash值、 合并代码块的hash值、 参 考代码块的hash值, 最后作为数据库中的合并方案 。 6.根据权利要求1所述的一种基于diff代码块匹配的重复冲突方案检测方法, 其特征 在于: 步骤5中, 根据遇到的冲突, 提取相应的冲突块, 运用hash算法对代码块进行hash, 获 得到的hash值, 通过数据库中的索引匹配数据库中的数据, 如果匹配成功, 将历史合并冲突 方案推荐给开 发人员, 并且 更新数据库中的合并方案时间, 如果匹配失败, 开 发人员手动解 决, 然后把本次的合并冲突方案保存到数据库中。权 利 要 求 书 1/1 页 2 CN 115168085 A 2一种基于dif f代码块匹配的重复冲突方案检测方 法 技术领域 [0001]本发明属于计算机技术领域, 尤其是软件技术领域, 具体涉及一种基于diff代码 块匹配的重复冲突方案检测方法。 背景技术 [0002]随着互联网技术的应用越来越广泛, 以及软件行业日新月异的变化, 远程协同工 作、 软件代码仓库的使用以及解决冲突的需求越来越多。 在协同开 发工作中, 有两种基础形 式, 分布式和集中式。 而Git作为一个典型的软件代码仓库, 是目前世界上最先进的分布式 版本控制系统。 分布式相比于集中式的最大区别在于开发者可以提交到本地, 每个开发者 通过克隆, 在本地机器上拷贝一个完整的Git仓库。 Git是用于Linux内核开发的版本控制工 具。 与常用的版本控制工具CVS,Subv ersion等不同, 它采用了分布式版本库的方式, 不必服 务器端软件支持, 使源代码的发布和交流极其方便。 Git的速度很快, 这对于诸如Linux   kernel这样的大项目来说自然很 重要。 Git最 为出色的是它的合并跟踪能力。 [0003]然而, 在协同工作中, 会有不同的人来进行协同工作, 会产生分支, 而使用Git版本 控制提交项目流程, 在合并不同的工作分支 时, 会产生合并错误, 即冲突。 尽管开发人员可 以通过Git中的方法调用, 从而来解决一些简单的合并冲突, 但对于复杂冲突的解决只能靠 开发人员自己去手动解决, 不仅如此, 面对大型的开源项目合并时, 冲突的数量就会急剧上 升, 大大增加了开发人员的工作量, 是Git 协同工作中所面临的主 要挑战。 [0004]针对这些问题的一个有效解决方案是在软件集成开发环境中提供冲突的解决方 案的功能。 这种提示功能应当通过开发人员以前解决好的历史冲突来进行分析, 对于现在 面临的冲突, 能够对于历史冲突信息的快速匹配, 为开 发人员提供解决冲突方案的提示, 从 而提高了开 发的效率。 但是由于 Git版本控制中合并方案的具体表现形式过于单一, 目前的 开源框架和IDE不能对复杂冲突的解决提供帮助。 发明内容 [0005]本发明的主要目标是研究一种能提供冲突过往解决方案的, 尤其是和历史冲突信 息存在相 似性的冲突, 提出一种基于diff代码块匹配的重复冲突方案检测方法, 着重利用 冲突的相似性以及从冲突中快速定位对应的冲突, 作为复杂合并冲突的方案之一, 有效地 帮助开发者理解代码, 更好 地完成开发任务。 [0006]本方法的主要工作是从历史信息中获取合并节点冲突信息, 将历史合并冲突方案 保存到数据库。 其中保存的是diff代码块, 并再次遇到相似冲突时, 可以快速查找冲突和推 荐冲突的解决方案以及冲突保存方案。 本模型可以用于现有合并冲突问题的解决方案进 行 匹配推荐。 首先, 本方法关注的是持续集成 中的合并问题的解决方案推荐, 对于具有 大量历 史合并代码的数据库, 如从一个代码仓库向另一个代码仓库迁移, 或一个代码库存在相似 更新等现实场景, 利用大量已经解决好合并问题的代码仓库信息, 抽取出相关的合并解决 方案。 其次, 对于获取到历史合并冲突的解决方案将其存储到数据库。 然后, 遇到现有冲突说 明 书 1/4 页 3 CN 115168085 A 3

PDF文档 专利 一种基于diff代码块匹配的重复冲突方案检测方法

文档预览
中文文档 9 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于diff代码块匹配的重复冲突方案检测方法 第 1 页 专利 一种基于diff代码块匹配的重复冲突方案检测方法 第 2 页 专利 一种基于diff代码块匹配的重复冲突方案检测方法 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 00:49:26上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。