[发明专利]一种基于程序分析的Pull Request功能分类方法有效
申请号: | 201911321383.1 | 申请日: | 2019-12-19 |
公开(公告)号: | CN110990055B | 公开(公告)日: | 2022-07-01 |
发明(设计)人: | 张卫丰;李旭阳;周国强;王子元;张迎周 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/71 | 分类号: | G06F8/71;G06F8/70 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 分析 pull request 功能 分类 方法 | ||
本发明为一种基于程序分析的Pull Request功能分类方法:首先,对当前版本项目和Pull Request中修改文件的提取。其次,对于待分析的程序,使用程序分析框架Soot,选择传递方式生成调用图Callgragh,遍历Callgragh直到调用的是第三方库提供的方法,将遍历到的节点和边保存到数据库中。然后,读取并分析数据库中保存的节点和边的关系,以Pull Request中的文件作为图的节点,构建图的邻接表结构。最后,基于图的深度优先遍历算法遍历邻接表的所有结点,以遍历的结果作为文件的功能分类,针对无调用关系的文件,以文件后缀名进行处理。
技术领域
本发明属于计算机技术领域。尤其是软件技术领域。本发明提出了一种基于程序分析来对Pull Request,尤其是可能包含多个功能的提交信息进行功能分类的方法,能够有效地针对当前GitHub等代码仓库无法快速审阅Pull Request中可能存在多个功能提交的情况,同时对同一个功能中文件的审阅顺序进行有效地确认。
背景技术
随着互联网技术的高速发展以及软件行业的逐步扩大,在软件开发的实际中,通常需要在已经发布的程序中添加新的功能并且满足多人协作的要求,版本控制系统帮助软件团队的开发人员协同工作,并存档他们工作的完整历史记录。作为一种典型的版本控制系统,Git具有版本库本地化和分布式的特性,其支持离线提交、快速切换分支、无单点故障且多个开发者相对独立但不影响协同开发,非常适用于业务性强、需求多变以及团队协同开发的软件系统,已然成为最广泛使用的版本控制系统之一。在多人合作项目中,PullRequest是软件开发中必不可少的功能,是将涉及不同功能的代码,纳入主干的一种流程。这个过程中,还可以进行讨论、审核和修改代码。
然而,在审核Pull Request过程中的常见问题是:在很多并不严格遵守代码提交规范的Pull Request中,一个Pull Request中包含多个commit版本,由于修改文件较多并且在目前的代码仓库中文件顺序通常是任意的,这就对审核人员查看和理解提交的PullRequest造成了很大困扰。尽管审核人员通常是项目的核心开发人员,对项目流程非常熟悉,但是仍需花费较大的精力定位代码的修改位置,确定可能存在的多个功能以及多个文件下代码的审核顺序。这些情况都大大增加了代码审核的成本,是团队协作开发过程中所面临的主要挑战之一。
针对这些问题的一个有效解决方案是在Pull Request中提供代码功能划分和文件审阅顺序推荐的功能。这种提示功能应当通过对于开发人员提交合并的代码的分析,确定提交文件所属的功能以及每个功能中文件的审核顺序,帮助审核人员更好地理解提交审核的Pull Request中代码的更改,从而提高审核的效率和准确性。
但在目前的主流版本控制系统中,并不能对Pull Request提交代码中的更改进行合适的功能划分和审核顺序确认,如在GitHub中的Pull Request通常情况下只以文件的后缀名确定文件的展示顺序。因此,本发明的主要目标是研究一种能准确划分提交代码,尤其是Java代码的功能的方法,同时提供每个功能所涉及文件的审核顺序,弥补当前版本控制系统中Pull Request审核方面的不足,有效地帮助审核人员理解提交的代码,更好地完成团队开发任务。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911321383.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种再生海岛丝POY工艺
- 下一篇:一种仿生鱼尾部推进转向装置