【技术实现步骤摘要】
一种基于早期特征预测拉取请求决策结果的方法
[0001]本技术涉及自动化代码合作领域,尤其涉及一种代码合作开发中拉取请求决策结果的自动预测方法
。
技术介绍
[0002]基于拉取请求的开发模型,是分布式软件开发的合作机制之一,被广泛应用于开源软件的开发实践中
。
在这一个模型中,外部开发者,也称为贡献者,复刻项目的基础仓库并独立地完成他的代码变更内容
。
在代码变更准备好之后,贡献者可以向基础仓库提交拉取请求
。
项目集成者和其他开发者可以评审在拉取请求中的代码变更,并进行评论等互动
。
最终,项目维护者基于拉取请求的质量和讨论,决定是否合并该拉取请求
。
[0003]在
2021
年,
GitHub
报道其平台产生了
1.7
亿条合并的拉取请求
。
然而,评审拉取请求需要项目集成者大量的精力,当拉取请求增多时,对项目集成者来说是一个沉重的负担
。
从我们收集 ...
【技术保护点】
【技术特征摘要】 【专利技术属性】
1.
一种基于早期特征预测拉取请求决策结果的方法,其特征在于,具体为:从拉取请求中提取标题信息和描述信息,从拉取请求的提交日志中提取代码变更信息;所述代码变更信息由新增代码段和删除代码段构成;根据拉取请求的贡献者历史活动信息
、
拉取请求的实体信息和
/
或拉取请求的项目信息提取一组手工特征;将标题信息和描述信息拼接后送入到第一特征提取模型,计算得到拉取请求描述内容的第一多维空间向量表示
R1
;将代码变更信息送入到第二特征提取模型,计算得到代码变更信息的第二多维空间向量表示
R2
;将第一多维空间向量表示
R1
和第二多维空间向量表示
R2
向量进行拼接,通过一层全连接层获得表示拉取请求语义信息的第三多维空间向量
R3
;将得到的第三多维空间向量表示
R3
及手工特征送入分类器,输出预测的决策结果;其中,所述第一特征提取模型
、
第二特征提取模型和分类器是基于收集的训练数据集训练获得的
。2.
根据权利要求1所述的方法,其特征在于,所述从拉取请求中提取标题信息和描述信息,具体为:从拉取请求中获取标题内容文本
、
描述内容文本;分别对标题内容文本
、
描述内容文本进行整理提取获得标题信息和描述信息;整理提取方法包括:保留文本中首次出现
“‑‑‑”
前的内容,丢弃
“‑‑‑”
之后的文本内容;丢弃文本中以
“‑
[]”开头的文本行;删除文本中的网页注释内容,并分别替换文本中的代码块
、commit
哈希值和网页地址为固定字符
。3.
根据权利要求1所述的方法,其特征在于,根据拉取请求的贡献者历史活动信息提取的手工特征包括拉取请求的贡献者是否为机器人账号
、
贡献者在创建拉取请求时创建的项目数
、
创建的提交数
、
创建的拉取请求数
、
创建的问题数
、
关注者数量
、
提交过
commits
的项目数量;在当前拉取请求所在项目中,贡献者创建过的问题数
、
一个月内创建的问题数
、
历史参与问题讨论数以及一个月内参与问题讨论数;在当前拉取请求所在项目中,贡献者创建过的拉取请求数
、
合并的拉取请求数以及关闭的拉取请求数,贡献者合并的拉取请求在创建的拉取请求中的比率中一种或多种;根据拉取请求的实体信息提取的手工特征包括当前拉取请求描述的长度
、
描述长度是否大于历史拉取请求的平均长度
、
描述的长度是否大于历史拉取请求的中位数长度
、
当前拉取请求是否是该贡献者首次创建的拉取请求;当前拉取请求中包含的早期
commits
个数;当前拉取请求中包含的早期
commits
中添加行数的总数
、
最大值以及最小值,当前拉取请求中包含的早期
commits
中删除行的总数
、
最大值及最小值,当前拉取请求中包含的早期
commits
中总共修改行数的总数
、
最大值以及最小值;当前拉取请求所修改文件的个数
、
当前拉取请求是否在首个
commit
创建前就已存在
、
当前拉取请求的修改中是否包含测试文件
、
文档文件中的一种或多种;根据拉取请求的项目信息提取的手工特征包括项目中包含的历史拉取请求合并数
技术研发人员:陈可行,鲍凌峰,胡星,夏鑫,杨小虎,
申请(专利权)人:浙江大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。