[发明专利]一种基于异构数据的相关补丁推荐方法有效
申请号: | 201911067915.3 | 申请日: | 2019-11-04 |
公开(公告)号: | CN111045716B | 公开(公告)日: | 2022-02-22 |
发明(设计)人: | 郑子彬;陈志豪;李全忠 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/658 | 分类号: | G06F8/658;G06F40/284 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 数据 相关 补丁 推荐 方法 | ||
本发明公开一种基于异构数据的相关补丁推荐方法,包括爬取代码审查的多元异构数据,洗清数据,拼接多元异构数据特征为补丁特征向量,配对补丁对,以与预测补丁有相关性为正样本,与预测补丁无相关性为负样本,并为正、负样本标记二分类标签后,划分训练集和验证集,用训练集分别训练逻辑回归、随机森林和LightGBM三个模型,得到相应概率和预测标签,再根据预测标签计算对应的准确率,最后再根据融合权值与相应概率的加权求和构建预测评分,获取最优预测评分。本发明利用机器学习对提交到代码审查系统的数据进行相关性评估得到最优推荐,提高推荐可靠性稳定性,更节省人力成本。
技术领域
本发明涉及代码审查领域,尤其涉及一种基于异构数据的相关补丁推荐方法。
背景技术
代码审查是软件工程项目顺利迭代的重要基础,是由多元复杂的小任务构成,包括代码规范的修正、代码的补充注释等。目前在软件工程领域应用较多的是采用人工审查的方法对代码进行更新和版本管理,人力成本高。
目前软件工程行业一般使用git、Gerrit等类似的系统进行代码管理和审查。在这些系统上每更新一次代码,我们称之为一次代码修改或一个补丁。这些系统,为每一份提交的补丁提供了一个审查者、提交者以完成查询或评论。补丁审查的基本流程是:
1)程序员,即作者完成补丁;
2)提交者提交补丁到审查系统;
3)审查者到审查系统审查并评。通过,则流程结束;否则,补丁作者参考审查者意见作出修改,并将流程回到第一步。
以下以Gerrit为例,对此类系统做详细说明:
1)代码审查系统会保存各个版本的补丁代码,而这些版本的代码属于同一个补丁,或者称为一次代码更新。
2)一般的代码审查系统会给每一个提交到系统的补丁加上一个唯一的数值型id,这个id越大,说明这个补丁提交的时间越晚。
3)提交到系统的补丁,一般包含:用以介绍本次补丁所解决问题的简述、提交者信息、审查者信息、提交时间、代码文件、diff文件即系统生成的相应代码修改对比文件。
各个版本代码的回溯和对相关提交的参考是修正代码错误和异常的必要流程。但由于每个工程下代码迭代次数多和代码文件数过多,靠人工去寻找与当前问题提交相关的其余提交,或者依靠人工事先去标注提交之间是否相关,都耗费大量的人力成本和时间成本。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于异构数据的相关补丁推荐方法。
本发明旨在至少在一定程度上解决上述技术问题。
为了达到上述技术效果,本发明的技术方案如下:
一种基于异构数据的相关补丁推荐方法,包括:
S10爬取代码审查网站代码审查记录或文件的多元异构数据,其中多元异构数据包括补丁基本信息、补丁代码、补丁简述、与预测补丁具有相关性的补丁列表;
S20利用补丁基本信息构建元特征;统计补丁代码中各种补丁类型的频次,并将同一个补丁修改过程中各个修改类型的频次组合成补丁的修改特征向量;提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征;将补丁元特征、修改特征向量、简述的嵌入特征拼接为补丁特征向量;
S30补丁代码中预测补丁i与补丁列表中补丁j组成补丁i-补丁j对,视为正样本,预测补丁i与补丁列表外的补丁j组成补丁i-补丁j对,视为负样本,i代表当前项,j为变量,代表成对补丁数,为正、负样本标记二分类标签;从多元异构数据中采集正、负样本构成样本集,将样本集划分为训练集、验证集;
S40用训练集训练逻辑回归模型、随机森林模型、LightGBM模型;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911067915.3/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置