CN111008038A - 一种基于逻辑回归模型的pull request被合并概率的计算方法 - Google Patents

一种基于逻辑回归模型的pull request被合并概率的计算方法 Download PDF

Info

Publication number
CN111008038A
CN111008038A CN201911321442.5A CN201911321442A CN111008038A CN 111008038 A CN111008038 A CN 111008038A CN 201911321442 A CN201911321442 A CN 201911321442A CN 111008038 A CN111008038 A CN 111008038A
Authority
CN
China
Prior art keywords
code
logistic regression
regression model
pull request
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911321442.5A
Other languages
English (en)
Other versions
CN111008038B (zh
Inventor
张卫丰
佟光海
周国强
张迎周
王子元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Posts and Telecommunications filed Critical Nanjing University of Posts and Telecommunications
Priority to CN201911321442.5A priority Critical patent/CN111008038B/zh
Publication of CN111008038A publication Critical patent/CN111008038A/zh
Application granted granted Critical
Publication of CN111008038B publication Critical patent/CN111008038B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明为一种基于逻辑回归模型的pull request被合并概率的计算方法:首先,确定PRs复杂性的指标并提取项目中PRs的相关信息;其次,使用提取的数据作为数据集训练逻辑回归模型;最后,使用训练好的逻辑回归模型预测新的PR合并的概率,为贡献者提供一个在评审之前进行改进的机会,以减轻评审者的负担。

Description

一种基于逻辑回归模型的pull request被合并概率的计算 方法
技术领域
本发明提出了一种基于逻辑回归模型的pull request(PR)被合并概率的计算方法,能够有效地计算PRs被合并的概率。主要解决了当前越来越多的PRs被拒绝影响社区发展的问题,属于统计分析和机器学习领域。
背景技术
GitHub是一个广泛使用的基于Git版本控制系统的协同软件开发平台。根据官方网站,截至2019年8月,GitHub受到了超过210万企业和组织的信任。除了大多数开源组织,商业公司,如微软和VMware,正在把他们的项目放到GitHub来吸引有才华的开发人员。
作为一个社会发展平台,GitHub通过pull request(PRs)进行代码管理和多人协作。代码贡献者可以以PR的形式提出代码修改申请,PR由贡献者提交的一个或多个提交组成,项目管理者和其他贡献者可以对PR进行讨论,审查,设置标签,修改,接受,拒绝等操作。最终决定哪些PRs可以合并到代码库中。
PR作为是开源社区贡献的主要方式,PR能否被有效地合并,能否更快地合并,成为了开源社区和开发者特别关心的问题。因此,对于开源社区来说,理解是什么让PRs被接受或被拒绝是很重要的,提交的更改大小也已经被证明是影响PRs被接受或被拒绝的因素。
目前,许多自动化工具可以用来帮助审查员分析PR的影响。例如,Codecov、Coveralls和Operias等工具会自动分析GitHub PR的代码覆盖率变化,并向贡献者和审查者提供详细的报告。像Travis CI这样的持续集成工具可以帮助贡献者和审查者理解GitHub PR是否会破坏构建。
但是,目前并没有工具可以对待评审的提交进行自动检查。因此,本发明的主要目的是研究一种能够自动分析PRs的复杂性和计算提交被合并的概率的方法,可以根据PRs的复杂性计算提交被合并到代码库的概率,将为贡献者提供一个在评审之前进行改进的机会,以减少审查者的负担,加快开源社区的发展。
发明内容
本发明的主要工作是提出一种基于逻辑回归模型的pull request(PR)被合并概率的计算方法。首先,本发明关注的是PRs的复杂性对提交集成的影响,首先对PRs的复杂性进行分类并获取PRs相关信息。然后,从统计学和机器学习的角度构建逻辑回归模型进行分析。最后,根据逻辑回归模型建立的PRs合并概率与PRs的复杂性的多个指标之间的关系,进行指数变换,以在评审之前计算PRs合并的概率。针对以上问题,本发明的工作和贡献如下:
1)获取GitHub上关注星数最多的仓库的已关闭的pull request信息并过滤无关值;
2)训练逻辑回归模型;
3)使用训练好的模型对新的pull request合并概率进行预测。
进一步的,所述步骤1的具体步骤如下:
步骤1.1)使用GitHubAPI提取GitHub代码仓库上关注的星数(stars)最多的项目的所有已经关闭的pull request(PR)信息,所述PRs中的信息包括删除的代码行数、增加的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、diffurl、merge状态;
步骤1.2)删除代码更改行数为0的非代码修改的PRs数据;
步骤1.3)根据步骤1.1)得到的删除的代码行数和增加的代码行数相加得到代码更改的总行数;
步骤1.4)根据步骤1.1)得到的diffurl获取diff文本信息,删除和添加的代码前都会有特殊的标记符‘-’和‘+’,连续增删的代码行构成了一个代码块,统计文本包含的代码块数;
步骤1.4.1)使用正则把文本信息中的空格替换为‘’、换行符替换为文本中不存在的特殊字符;
步骤1.4.2)使用正则匹配筛选出文本中所有特殊字符和特殊字符与‘-’或‘+’连接的字符,组成数组;
步骤1.4.3)从数组中第一次出现的特殊字符与‘-’或‘+’连接字符的位置开始截取得到新的数组;
步骤1.4.4)遍历数组删除数组中与前一项相同的项,得到新数组;
步骤1.4.5)遍历数组计算数组中特殊字符的总项数,即更改的代码块数;
步骤1.5)把删除的代码行数、增加的代码行数、更改的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、代码块数存入矩阵作为输入数据;
步骤1.6)merge状态为false的标记为0,true的标记为1,存入矩阵作为真实结果。
进一步的,所述步骤2的具体步骤如下:
步骤2.1)估计参数随机初始化为接近0的数,截距初始化为0;
步骤2.2)基于输入数据、估计参数和截距,计算预测的输出结果;
步骤2.3)基于预测的输出结果和真实的结果,计算代价函数;
步骤2.4)对代价函数求导,计算梯度;
步骤2.5)设置步长,使用梯度下降法更新估计参数和截距;
步骤2.6)设置迭代次数,再重复步骤2.2)至2.5),直到导数得到最小化的代价函数,得到逻辑回归模型。
进一步的,所述步骤2.2)中计算预测的输出结果的公式如下:
Z=WTX+b=[WTx(1)+b,WTx(2)+b,…,WTx(m)+b]
Figure BSA0000198016090000031
其中,X表示输入数据,W表示估计参数,b表示截距,A表示预测的结果。
进一步的,所述步骤2.3)中计算代价函数的公式如下:
Figure BSA0000198016090000032
其中,m表示输入数据的行数,a表示预测的结果,y表示真实的结果。
进一步的,所述步骤2.5)中更新估计参数和截距的公式如下:
Figure BSA0000198016090000033
Figure BSA0000198016090000034
其中,α表示步长,w表示估计参数,b表示截距。
进一步的,所述步骤3的具体步骤如下:
步骤3.1)将新的pull request按照步骤1抽取信息为输入数据;
步骤3.2)将输入数据代入到逻辑回归模型中得到概率值,即该pull request被合并的概率。
发明所达到的有益效果:本发明是一种基于逻辑回归模型的pull request被合并概率的计算方法,实现在开源项目中在繁重的代码审查工作之前预测PRs被合并的概率,为贡献者提供一个在评审之前进行改进的机会,以减少审查者的负担,加快开源社区的发展。
附图说明
图1为本发明的中体设计流程图;
图2为本发明基于逻辑回归模型训练数据集的流程图
具体实施方式
本发明具体包括以下步骤:
步骤1)准备数据集
步骤1.1)使用GitHubAPI提取GitHub代码仓库上关注的星数(stars)最多的项目的所有已经关闭的pull request(PR)信息,所述PRs中的信息包括删除的代码行数、增加的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、diffurl、merge状态;
步骤1.2)删除代码更改行数为0的非代码修改的PRs数据;
步骤1.3)根据步骤1.1)得到的删除的代码行数和增加的代码行数相加得到代码更改的总行数;
步骤1.4)根据步骤1.1)得到的diffurl获取diff文本信息,删除和添加的代码前都会有特殊的标记符‘-’和‘+’,连续增删的代码行构成了一个代码块,统计文本包含的代码块数;
步骤1.4.1)使用正则把文本信息中的空格替换为‘’、换行符替换为文本中不存在的特殊字符;
步骤1.4.2)使用正则匹配筛选出文本中所有特殊字符和特殊字符与‘-’或‘+’连接的字符,组成数组;
步骤1.4.3)从数组中第一次出现的特殊字符与‘-’或‘+’连接字符的位置开始截取得到新的数组;
步骤1.4.4)遍历数组删除数组中与前一项相同的项,得到新数组;
步骤1.4.5)遍历数组计算数组中特殊字符的总项数,即更改的代码块数;
步骤1.5)把删除的代码行数、增加的代码行数、更改的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、代码块数存入矩阵作为输入数据;
步骤1.6)merge状态为false的标记为0,true的标记为1,存入矩阵作为真实结果。
步骤2)训练逻辑回归模型
步骤2.1)估计参数随机初始化为接近0的数,截距初始化为0;
步骤2.2)基于输入数据、估计参数和截距,计算预测的输出结果;
需要说明的是,计算预测的输出结果的公式如下:
Z=WTX+b=[WTx(1)+b,WTx(2)+b,…,WTx(m)+b]
Figure BSA0000198016090000051
其中,X表示输入数据,W表示估计参数,b表示截距,A表示预测的结果。
步骤2.3)基于预测的输出结果和真实的结果,计算代价函数;
需要说明的是,计算代价函数的公式如下:
Figure BSA0000198016090000052
其中,m表示输入数据的行数,a表示预测的结果,y表示真实的结果。
步骤2.4)对代价函数求导,计算梯度;
步骤2.5)设置步长,使用梯度下降法更新估计参数和截距;
需要说明的是,更新估计参数和截距的公式如下:
Figure BSA0000198016090000053
Figure BSA0000198016090000054
其中,α表示步长,w表示估计参数,b表示截距。
步骤2.6)设置迭代次数,再重复步骤2.2)至2.5),直到导数得到最小化的代价函数,得到逻辑回归模型。
步骤3)使用训练好的模型对新的pull-request合并概率进行预测
步骤3.1)将新的pull request按照步骤1抽取信息为输入数据;
步骤3.2)将输入数据代入到逻辑回归模型中得到概率值,即该pull request被合并的概率。

Claims (7)

1.一种基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,该方法分为以下步骤:
1)获取GitHub上关注星数最多的仓库的已关闭的pull request信息并过滤无关值;
2)训练逻辑回归模型;
3)使用训练好的模型对新的pull request合并概率进行预测。
2.根据权利要求1所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤1的具体步骤如下:
步骤1.1)使用GitHubAPI提取GitHub代码仓库上关注的星数(stars)最多的项目的所有已经关闭的pull request(PR)信息,所述PRs中的信息包括删除的代码行数、增加的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、diffurl、merge状态;
步骤1.2)删除代码更改行数为0的非代码修改的PRs数据;
步骤1.3)根据步骤1.1)得到的删除的代码行数和增加的代码行数相加得到代码更改的总行数;
步骤1.4)根据步骤1.1)得到的diffurl获取diff文本信息,删除和添加的代码前都会有特殊的标记符‘-’和‘+’,连续增删的代码行构成了一个代码块,统计文本包含的代码块数;
步骤1.4.1)使用正则把文本信息中的空格替换为‘’、换行符替换为文本中不存在的特殊字符;
步骤1.4.2)使用正则匹配筛选出文本中所有特殊字符和特殊字符与‘-’或‘+’连接的字符,组成数组;
步骤1.4.3)从数组中第一次出现的特殊字符与‘-’或‘+’连接字符的位置开始截取得到新的数组;
步骤1.4.4)遍历数组删除数组中与前一项相同的项,得到新数组;
步骤1.4.5)遍历数组计算数组中特殊字符的总项数,即更改的代码块数;
步骤1.5)把删除的代码行数、增加的代码行数、更改的代码行数、PR中包含的commit数、删除的文件数、增加的文件数、编辑的文件数、更改的文件数、代码块数存入矩阵作为输入数据;
步骤1.6)merge状态为false的标记为0,true的标记为1,存入矩阵作为真实结果。
3.根据权利要求1所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤2的具体步骤如下:
步骤2.1)估计参数随机初始化为接近0的数,截距初始化为0;
步骤2.2)基于输入数据、估计参数和截距,计算预测的输出结果;
步骤2.3)基于预测的输出结果和真实的结果,计算代价函数;
步骤2.4)对代价函数求导,计算梯度;
步骤2.5)设置步长,使用梯度下降法更新估计参数和截距;
步骤2.6)设置迭代次数,再重复步骤2.2)至2.5),直到导数得到最小化的代价函数,得到逻辑回归模型。
4.根据权利要求3所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤2.2)中计算预测的输出结果的公式如下:
Z=WTX+b=[WTx(1)+b,WTx(2)+b,…,WTx(m)+b]
Figure FSA0000198016080000021
其中,X表示输入数据,W表示估计参数,b表示截距,A表示预测的结果。
5.根据权利要求3所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤2.3)中计算代价函数的公式如下:
Figure FSA0000198016080000022
其中,m表示输入数据的行数,a表示预测的结果,y表示真实的结果。
6.根据权利要求3所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤2.5)中更新估计参数和截距的公式如下:
Figure FSA0000198016080000023
Figure FSA0000198016080000024
其中,α表示步长,w表示估计参数,b表示截距。
7.根据权利要求1所述的基于逻辑回归模型的pull request被合并概率的计算方法,其特征在于,所述步骤3的具体步骤如下:
步骤3.1)将新的pull request按照步骤1抽取信息为输入数据;
步骤3.2)将输入数据代入到逻辑回归模型中得到概率值,即该pull request被合并的概率。
CN201911321442.5A 2019-12-19 2019-12-19 一种基于逻辑回归模型的pull request被合并概率的计算方法 Active CN111008038B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911321442.5A CN111008038B (zh) 2019-12-19 2019-12-19 一种基于逻辑回归模型的pull request被合并概率的计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911321442.5A CN111008038B (zh) 2019-12-19 2019-12-19 一种基于逻辑回归模型的pull request被合并概率的计算方法

Publications (2)

Publication Number Publication Date
CN111008038A true CN111008038A (zh) 2020-04-14
CN111008038B CN111008038B (zh) 2022-08-02

Family

ID=70116547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911321442.5A Active CN111008038B (zh) 2019-12-19 2019-12-19 一种基于逻辑回归模型的pull request被合并概率的计算方法

Country Status (1)

Country Link
CN (1) CN111008038B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024058299A1 (ko) * 2022-09-16 2024-03-21 쿠팡 주식회사 Ab 테스트 코드 정보 관리를 위한 전자 장치 및 그 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104583947A (zh) * 2012-08-20 2015-04-29 微软公司 预测软件构建错误
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム
US9430229B1 (en) * 2013-03-15 2016-08-30 Atlassian Pty Ltd Merge previewing in a version control system
US20190026663A1 (en) * 2017-07-20 2019-01-24 Ca, Inc. Inferring time estimates in workflow tracking systems
CN109885776A (zh) * 2019-02-27 2019-06-14 中南大学 开源社区pr评审者可解释推荐模型
CN109947462A (zh) * 2019-03-15 2019-06-28 武汉大学 一种面向软件代码变更集成的决策支持方法及装置
CN109992502A (zh) * 2017-12-30 2019-07-09 中国移动通信集团四川有限公司 应用软件性能自动检测分析方法、装置、设备及介质
CN110442847A (zh) * 2019-07-26 2019-11-12 南京邮电大学 基于代码仓库过程管理的代码相似性检测方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104583947A (zh) * 2012-08-20 2015-04-29 微软公司 预测软件构建错误
US9430229B1 (en) * 2013-03-15 2016-08-30 Atlassian Pty Ltd Merge previewing in a version control system
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム
US20190026663A1 (en) * 2017-07-20 2019-01-24 Ca, Inc. Inferring time estimates in workflow tracking systems
CN109992502A (zh) * 2017-12-30 2019-07-09 中国移动通信集团四川有限公司 应用软件性能自动检测分析方法、装置、设备及介质
CN109885776A (zh) * 2019-02-27 2019-06-14 中南大学 开源社区pr评审者可解释推荐模型
CN109947462A (zh) * 2019-03-15 2019-06-28 武汉大学 一种面向软件代码变更集成的决策支持方法及装置
CN110442847A (zh) * 2019-07-26 2019-11-12 南京邮电大学 基于代码仓库过程管理的代码相似性检测方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ABDILLAH MOHAMED: "Predicting Which Pull Requests Will Get Reopened in GitHub", 《2018 25TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC)》 *
DI CHEN: "Replication Can Improve Prior Results: A GitHub Study of Pull Request Acceptance", 《2019 IEEE/ACM 27TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION (ICPC)》 *
余跃: "面向开源社区的群体化协同开发机理实证研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 *
陈予诚: "基于监督学习的开源平台软件开发行为研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024058299A1 (ko) * 2022-09-16 2024-03-21 쿠팡 주식회사 Ab 테스트 코드 정보 관리를 위한 전자 장치 및 그 방법

Also Published As

Publication number Publication date
CN111008038B (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
Rameezdeen et al. A qualitative examination of major barriers in implementation of reverse logistics within the South Australian construction sector
CN111125343A (zh) 适用于人岗匹配推荐系统的文本解析方法及装置
US10579651B1 (en) Method, system, and program for evaluating intellectual property right
CN109800354B (zh) 一种基于区块链存储的简历修改意图识别方法及系统
CN108563783B (zh) 一种基于大数据的财务分析管理系统及方法
CN111160473A (zh) 一种分类标签的特征挖掘方法及装置
CN111383101A (zh) 贷后风险监控方法、装置、设备及计算机可读存储介质
CN109871688B (zh) 漏洞威胁程度评估方法
US11562262B2 (en) Model variable candidate generation device and method
CN108614778B (zh) 基于高斯过程回归的安卓App程序演化变更预测方法
CN107368526A (zh) 一种数据处理方法及装置
CN113505936A (zh) 项目审批结果的预测方法、装置、设备及存储介质
CN110688536A (zh) 一种标签预测方法、装置、设备和存储介质
Ogunleye The concepts of predictive analytics
CN110310012B (zh) 数据分析方法、装置、设备及计算机可读存储介质
CN110705283A (zh) 基于文本法律法规与司法解释匹配的深度学习方法和系统
Lopes et al. A survey of process mining competitions: the BPI challenges 2011–2018
CN111008038B (zh) 一种基于逻辑回归模型的pull request被合并概率的计算方法
CN111241497A (zh) 基于软件复用特征学习的开源代码溯源检测方法
CN109359288B (zh) 一种对于法务领域文书量化评估的方法
CN113420018A (zh) 用户行为数据分析方法、装置、设备及存储介质
CN110413307A (zh) 代码功能的关联方法、装置及电子设备
CN116012019A (zh) 一种基于大数据分析的金融风控管理系统
CN115292167A (zh) 生命周期预测模型构建方法、装置、设备及可读存储介质
CN115952186A (zh) 一种问题数据及其链路追溯方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant