CN117495064B - 一种面向多样性的代码审查者推荐方法及存储介质、设备 - Google Patents

一种面向多样性的代码审查者推荐方法及存储介质、设备 Download PDF

Info

Publication number
CN117495064B
CN117495064B CN202410004133.XA CN202410004133A CN117495064B CN 117495064 B CN117495064 B CN 117495064B CN 202410004133 A CN202410004133 A CN 202410004133A CN 117495064 B CN117495064 B CN 117495064B
Authority
CN
China
Prior art keywords
code
developer
workload
pull request
request
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.)
Active
Application number
CN202410004133.XA
Other languages
English (en)
Other versions
CN117495064A (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.)
Anhui Sigao Intelligent Technology Co ltd
Original Assignee
Anhui Sigao Intelligent Technology Co ltd
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 Anhui Sigao Intelligent Technology Co ltd filed Critical Anhui Sigao Intelligent Technology Co ltd
Priority to CN202410004133.XA priority Critical patent/CN117495064B/zh
Publication of CN117495064A publication Critical patent/CN117495064A/zh
Application granted granted Critical
Publication of CN117495064B publication Critical patent/CN117495064B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06313Resource planning in a project environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Educational Administration (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Quality & Reliability (AREA)
  • General Business, Economics & Management (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Artificial Intelligence (AREA)
  • Development Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种代码审查者推荐方法,属于开源软件生态服务技术领域,包括:基于开源软件项目中拉取请求与开发者间的协作行为,将开源软件项目中的文件分为风险文件和安全文件,并计算开发者保留率,以开发者保留率作为知识流失风险的指标;获取开源软件项目的开发者工作负载;构建超边,并计算超边权重,获取开发者与拉取请求的交互关系超图;根据交互关系超图,获取目标拉取请求的超图切向量;根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果。本发明的方案能够有效减少知识流失风险,并平衡开发者工作负载。

Description

一种面向多样性的代码审查者推荐方法及存储介质、设备
技术领域
本发明属于开源软件生态服务技术领域,具体涉及一种面向多样性的代码审查者推荐方法及存储介质、设备。
背景技术
在GitHub开源软件协作开发平台中,开发者基于拉取请求(Pull Request,PR)的协作开发模型进行协作开发。开发者通过向拉取请求提供修改代码参与项目开发,开发团队通过审查拉取请求进行代码质量检查以完成项目正常迭代。开源软件项目中对拉取请求开展高效的代码审查是项目能够健康快速迭代的基础保障。近年来,部分研究表明开源软件项目中一半以上拉取请求的审查周期超过一个月,且审查时间受到提交时间、审查人员数量等因素影响。低效率的审查工作严重阻碍了项目的发展,为提高审查效率,为拉取请求分派合适的审查者是必要的,这种分派可以是贡献者主动邀请,也可以是开源软件项目指定,GitHub为软件项目提供了assign这一功能。但一项研究发现16%-66%的审查请求中至少有一个被邀请的审查者没有回应。
由于上述多项挑战,代码审查在实践中受到了很多关注。现有的主流代码审查者推荐方法以推荐专业的审查者为目标,且是在假定实际数据中的审查者即为最合适的审查者的前提下进行评估的。这导致推荐的审查者多是项目团队的核心开发者,使得项目知识被囤积到少数开发者中,增大了项目知识流失风险,也容易造成核心团队审查负载过重、审查资源分配不均衡,造成严重的审查等待。
为了解决上述技术问题,给拉取请求分派合适的代码审查者,诸多现代代码审查(Modern Code Review,MCR)方法提出并应用到实际开发中。比如:基于拉取请求修改文件路径集相似性进行代码审查者推荐;以每个审查者在过去的审查中对所审代码的具体贡献如审查次数、审查时间、审查工作负载等为依据,评估代码审查者的专业技能,并据此进行审查者推荐;结合审查历史交互记录,通过挖掘和分析历史记录中拉取请求创建者与审查者之间的社会关系,构建评论网络,以寻找具有共同兴趣的开发者作为审查者;通过挖掘和分析历史记录中拉取请求创建者及拉取请求审查者之间的合作关系以及拉取请取之间的相似关系,构建超图,并利用超图排序算法来推荐审查者。
部分研究逐渐关注到开源软件项目中的知识流失风险问题,提出开发者可以通过多种开发行为进行交流并传递知识。另有研究表明开发者负载等非技术性因素对代码审查响应时间及最终审查质量有重大影响。一些研究通过分析开发者与软件工件的交互行为来探究开发者的知识传播问题,也有学者从拉取请将审查队列长度、代码变更规模等方面衡量开发者工作负载。这些方法大多基于简单的审查交互历史和代码提交行为来衡量知识传播、工作负载,或进一步推荐代码审查者,没有全面的分析开发者和拉取请求的多种交互行为,对面向减少知识流失风险和平衡开发者工作负载的多样化代码审查者推荐策略也缺少研究。
开发者在开源项目完成协作开发工作时,能够获取项目知识,同时,开源软件项目也会因为开发者的离职而导致项目知识的流失。开源软件项目中核心开发者承担了大部分开发任务和代码审查任务,使得开发团队工作负载不均衡。现有代码审查者推荐方法倾向于推荐经验丰富的代码审查者,这会导致项目知识在小团队内传播,从而具有因开发者离职带来的较大流失风险,也会使得部分核心开发者工作负载过大。
发明内容
本发明从知识流失风险与开发者工作负载角度出发,推荐面向多样性的代码审查者,旨在减少项目知识的流失风险,并平衡开发者工作负载。
本发明提出的一种代码审查者推荐方法包括:
基于开源软件项目中拉取请求与开发者间的协作行为,将开源软件项目中的文件按照文件安全等级分为风险文件和安全文件,并计算开发者保留率,以文件安全等级和开发者保留率作为知识流失风险计算的指标;
基于开源软件项目中拉取请求与开发者间的协作行为,获取开源软件项目的开发者工作负载;所述开发者工作负载包括代码审查工作负载、代码修改工作负载、遗留任务工作负载,如果候选人是待推荐拉取请求的代码提交者,开发者工作负载还包括目标拉取请求的待审查工作负载;
基于开源软件项目中拉取请求与开发者间的协作行为构建超边,并计算超边权重,获取开发者与拉取请求的交互关系超图;
根据开发者与拉取请求的交互关系超图,获取目标拉取请求的最优超图切向量,作为目标拉取请求的关联值向量;
根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果。
进一步地,基于开源软件项目中拉取请求与开发者间的协作行为,将开源软件项目中的文件按照文件安全等级分为风险文件和安全文件,并计算开发者保留率,包括:
定义一段时间为一个观察期,统计观察期内开源软件项目文件与开发者基于代码提交、代码审查和审查评论的交互行为次数,将观察期内交互行为次数低于规定阈值的开源软件项目文件定义为风险文件,交互行为次数大于等于规定阈值的开源软件项目文件为安全文件;
基于开发者在过去一年的交互行为数据,计算开发者保留率
其中,表示开发者/>在过去一年中有交互行为的月份数量,/>,/>,/>分别是开源项目数据集开始时间、数据集结束时间以及开发者/>最后一次活跃时间,/>,/>分别是开发者/>在过去一年留下的审查评论数量、审查记录数以及代码提交数,/>是开发者的数量。
进一步地,代码审查工作负载具体为:
拉取请求相关的提交记录先于拉取请求创建时,将代码审查完成时间与拉取请求创建时间的差值作为代码审查工作负载;
拉取请求相关的提交记录后于拉取请求创建时,将代码审查完成时间与拉取请求相关的提交记录时间的差值作为代码审查工作负载;
拉取请求审查时间超过设定值,将对应拉取请求相关的提交记录的修改文件集在其他代码审查记录中的平均审查时长之和作为代码审查工作负载。
进一步地,代码修改工作负载具体为:
仅存在一次代码提交记录,或者两次代码提交间隔超过设定值,将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载,其中行平均代码修改时间是已完成的所有代码修改的所有文件的每行代码修改时间的平均值;
对于采纳代码审查意见后重新提交修改代码的开发者,将两次代码提交时间差作为代码修改工作负载;
对持续依次参与多个拉取请求的开发者,以连续两个拉取请求涉及的提交记录的时间差作为代码修改工作负载,若时间差超过设定值,则将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载;
对同时参与多个拉取请求的开发者,若平均代码行修改工作量超过3天,则将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载;否则直接计算两次代码提交创建时间差作为代码修改工作负载。
进一步地,遗留任务工作负载具体为:
遗留任务指观察期内已进入审查阶段但尚未完成审查的拉取请求遗留的工作任务。将遗留任务涉及的所有文件在已进行的审查过程中的代码审查工作负载,在审查记录中的审查时间总和,作为遗留任务工作负载。
进一步地,目标拉取请求的待审查工作负载具体为:
根据拉取请求的修改文件在历史审查记录中的工作负载情况,计算拉取请求所涉及代码修改的行平均审查工作负载,将拉取请求所涉及代码修改的行平均审查工作负载与待审查的修改行乘积作为目标拉取请求的待审查工作负载。
进一步地,基于开源软件项目中拉取请求与开发者间的协作行为构建超边,并计算超边权重,获取开发者与拉取请求的交互关系超图,具体为:
遍历项目所有拉取请求,获取拉取请求集合与开发者集合,并将拉取请求和开发者初始化为超图节点;
根据项目中开发者在拉取请求中的提交代码记录,构建拉取请求与代码提交开发者超边,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码提交开发者超边权重,/>表示拉取请求/>的代码提交者数量,/>表示/>的某个代码提交者的提交次数,/>为/>的某个代码提交者第/>次提交的创建时间,/>表示代码修改总行数,/>是一个经验衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者的拉取请求代码审查记录,构建拉取请求与代码审查者超边,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码审查者u超边权重,/>表示/>的代码审查者数量,/>表示/>的某个代码审查者的审查次数,/>为/>的某个代码审查者第/>次审查的创建时间,/>是衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者创建拉取请求记录,构建拉取请求与创建者超边,并计算该超边权重,具体计算方式如下:
其中,为拉取请求与创建者超边权重,开发者/>创建拉取请求/>,开发者/>也称为拉取请求/>的创建者,/>为拉取请求/>与创建者/>超边权重,/>为创建拉取请求/>的时间,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者在拉取请求中的问题评论记录,构建拉取请求与问题评论者超边,根据开发者在拉取请求文件变更内容中的审查评论记录,构建拉取请求与审查评论者超边,并计算该超边权重,具体计算方式如下:
式中,为拉取请求与审查评论者超边权重,/>表示/>的审查评论者数量,/>表示/>的某个评论者的评论次数,/>为/>的某个评论者第/>次评论的创建时间,/>是衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据拉取请求的相似度,构建相似拉取请求超边,并将其相似度作为超边权重,具体计算方式如下:
其中,为相似拉取请求超边权重,/>与/>分别为/>与/>的修改文件路径集,/>表示分别隶属于/>与/>的文件/>与文件/>之间的路径距离,/>表示/>中的路径数量,/>表示/>中的路径数量,/>为创建拉取请求/>的时间,/>为创建拉取请求/>的时间,/>表示文件/>与文件/>的最长公共前缀函数,表示文件/>与文件/>中的最大路径长度。
进一步地,根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果,具体为:
对于目标拉取请求,考虑面向降低知识流失风险进行代码审查者推荐,具体计算方式如下式:
其中,表示对于目标拉取请求,考虑面向降低知识流失风险进行代码审查者推荐得分,/>表示开发者/>的保留率,/>表示开发者/>对待推荐拉取请求/>在不考虑降低知识流失风险时的得分,/>指待推荐拉取请求/>涉及到的修改文件中风险文件的数量,/>表示拉取请求/>修改文件集合,/>为/>中的风险文件,/>,/>是超参数,/>分别为/>作为代码审查者、代码提交者、审查评论者的候选推荐得分,/>分别表示各得分所占权重,若候选人/>不曾扮演过某类角色,则对应的得分为0;
在降低知识流失风险的基础上,考虑开发者工作负载平衡策略,候选人推荐得分计算公式如下所示:
式中,表示在降低知识流失风险的基础上,考虑开发者工作负载平衡策略,候选人推荐得分,/>表示候选人/>当前工作负载在所有候选人中的排名的比例情况,/>表示当前候选人/>当前工作负载在所有候选人中的排名数,表示候选人总数,/>表示候选人当前工作负载总量,/>表示候选人是待推荐拉取请求的代码提交者,/>表示候选人不是待推荐拉取请求的代码提交者,/>表示代码审查工作负载,/>表示代码修改工作负载,表示遗留任务工作负载,/>表示待审查工作负载,/>为预设的超参数,用以调整负载审查者比例。
本发明还提出一种存储介质,存储介质上存储有数据处理程序,数据处理程序被处理器执行时实现上述的一种代码审查者推荐方法的步骤。
本发明还提出一种电子设备,包括处理器和存储器,所述处理器与所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括计算机可读指令,所述处理器被配置用于调用所述计算机可读指令,执行上述的一种代码审查者推荐方法。
本发明提供的技术方案带来的有益效果是:
本发明公开了一种代码审查者推荐方法,所述方法基于开源软件项目中拉取请求与开发者间的协作行为,进行开源软件项目的知识流失风险评估和开发者工作负载评估;并构建开发者与拉取请求的交互关系超图;根据交互关系超图确定各拉取请求的超图切向量,根据知识流失风险和开发者工作负载进行推荐排序,输出代码审查者推荐结果。本发明的方案能够充分考虑开发者在与拉取请求协作过程中的知识传播和工作负载分布,能够有效减少知识流失风险,并平衡开发者工作负载。
附图说明
图1是本发明实施例一种代码审查者推荐方法的流程图;
图2是本发明实施例一示例性实施例中的一种电子设备的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
本发明实施例的一种代码审查者推荐方法的流程图如图1所示,包括:
本发明基于GitHub平台上Scala项目中的代码审查者推荐为实施例,选取其中2018年6月1日至2021年11月31日的数据构建实验所需项目数据集,数据集共计3111个拉取请求数据和6407条代码提交记录,以及包括11581个问题评论、7222个审查评论和8974条审查记录的交互数据。
(1)基于开源软件项目中拉取请求与开发者间的协作行为,进行开源软件项目的知识流失风险评估。将开源软件项目中的文件按照文件安全等级分为风险文件和安全文件,并计算开发者保留率,以文件安全等级和开发者保留率作为知识流失风险计算的指标。
(1.1)定义选定的某段时间(3个月)为一个观察期,统计观察期内开源软件项目文件与开发者基于代码提交commit、代码审查review和审查评论comment的交互行为次数,将观察期内与低于2个开发者交互的项目文件定义为“风险文件,大于等于2个开发者的为“安全文件”。
(1.2)基于开发者在过去一年的交互行为数据,来计算开发者继续留在开发团队任职的概率,即开发者保留率
其中,表示开发者/>在过去一年中活跃(有交互行为数据)的月份数量数,/>,/>分别是开源项目数据集开始时间、数据集结束时间以及开发者/>最后一次活跃时间。,/>,/>分别是开发者/>在过去一年留下的审查评论数量、审查记录数以及代码提交数,/>是开发者的数量。
(2)基于开源软件项目中拉取请求与开发者间的协作行为,评估开源软件项目的开发者工作负载,开发者工作负载包括代码审查工作负载、代码修改工作负载、遗留任务工作负载,如果候选人是待推荐拉取请求的代码提交者,开发者工作负载还包括待审查工作负载。
具体包括以下步骤:
(2.1)分析拉取请求关闭时间规律,为开发者及拉取请求工作负载的评估设定观察期。观察期过长会掩盖开发者在该段时间内的负载差异,观察期过短则可能无法准确反映开发者的当前负载状况。因此统计开源项目的拉取请求关闭时间分布情况,若90%的拉取请求均能够在一定时间长度被关闭,则设定该时间长度为观察期。
(2.2)代码审查工作负载评估。基于代码审查机制,审查者需要对拉取请求涉及的提交记录(commit)进行审查,直至该拉取请求满足项目合并要求。因此将拉取请求相关的提交记录到被审查完成的时长作为代码审查者在该拉取请求上的代码审查工作负载,具体计算方式如下:
(2.2.1)commit先于拉取请求创建时,将审查完成时间与拉取请求创建时间的差值作为审查工作耗费的工作负载。
(2.2.2)commit后于拉取请求创建时,将审查完成时间与commit时间的差值作为代码审查工作负载。
(2.2.3)拉取请求审查时间过长时(一般认为超过3个月),将对应commit的修改文件集在其他审查记录中的平均审查时长之和作为代码审查工作负载。
(2.3)代码修改工作负载评估。开发者以功能实现、缺陷修复等为目标修改一到多个源代码文件后进行代码提交,因此将开发者的代码提交记录时间间隔作为其代码修改工作的工作负载,具体计算方式如下:
(2.3.1)对于仅存在一次代码提交记录,或者两次代码提交间隔过长(一般认为超过3个月),则将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载,其中行平均代码修改时间是已完成的所有代码修改的所有文件的每行代码修改时间的平均值。
(2.3.2)对于采纳代码审查意见后重新提交修改代码的开发者,将两次代码提交时间差作为代码修改工作负载。
(2.3.3)对持续依次参与多个拉取请求的活跃开发者,例如,开发者在提交以完成拉取请求/>中后,继续以代码提交/>参与到拉取请求/>中,则开发者在代码提交/>中的工作量可以计算为/>与/>时间差,若时间差过长,则按照情况2.3.1中的方法进行计算。
(2.3.4)对同时参与多个拉取请求的开发者,若平均代码行修改工作量超过3天,则视为代码提交间隔过长,通过2.3.1计算,否则直接计算两次代码提交创建时间差作为代码修改工作负载。例如,开发者花费长时间完成/>时又开始修改/>,且/>先于/>提交,这将导致应属于/>的工作量被计入/>,因此判断平均代码行修改工作量是否超过3天,若超过则按S2.3.1计算,否则直接计算差值。
(2.4)遗留任务工作负载预估。遗留任务是指观察期内已进入审查阶段但尚未完成审查的拉取请求留下的工作任务。将遗留任务涉及的所有文件在已进行的审查过程中的代码审查工作负载,即所有被修改文件中的代码行修改,在过去的审查记录中的审查时间总和,作为开发者在遗留任务中的预估的待完成工作负载。
(2.5)基于拉取请求的修改文件集合以及这些文件在历史审查记录中的审查工作负载,评估目标拉取请求的待审查工作负载。具体是根据拉取请求的修改文件在历史审查记录中的工作负载情况,计算拉取请求所涉及代码修改的行平均审查工作负载,将其与本次待审查的修改行乘积作为目标拉取请求的待审查工作负载。具体计算步骤为:
(2.5.1)对于有修改记录的文件,按照上面的方法获取该文件对应的开发者审查工作负载,基于其在历史审查记录中对应拉取请求中所提交的代码修改行数,获取行平均审查工作负载。将该行平均审查工作负载与本次待审查的代码修改行的乘积作为该文件所需要的待审查工作负载。
(2.5.2)对于没有修改记录的文件,以项目所有文件的行平均审查时间为该文件的行平均审查工作负载。将该行平均审查工作负载与本次待审查的代码修改行的乘积作为该文件所需要的待审查工作负载。
具体的,以拉取请求为例介绍该待推荐拉取请求的所需工作负载计算过程。拉取请求/>在创建时共修改三个文件,具体文件修改及审查记录信息如表1所示,文件1曾在拉取请求/>、/>、/>、/>中被修改并审查过,文件2为没有被审查过的新增文件,文件3则涉及包括/>、/>、/>、/>、/>、/>、/>、/>、/>、/>、/>在内的12个拉取请求。对文件1和文件3而言,计算得到这些拉取请求的行审查时间,并计算它们的平均值。其中文件1中,由于审查者janekdb"对拉取请求/>的审查时间过长而无意义,因此在计算平均值时将其排除。对文件2而言,本文将项目历史记录中所有文件的行审查时间平均值近似为该文件的行平均审查时间。因此,对于待推荐拉取请求/>,本文预计的审查时间为(天)。需要注意的是,本发明计算的负载时间仅用于衡量和比较不同任务需要消耗的开发者工作负载大小,与现实世界中的时间不一定完全一致。
表1 拉取请求pr8147的修改文件集及其历史审查记录
(3)基于开源软件项目中拉取请求与开发者间的协作行为构建超边,并计算超边权重,获取开发者与拉取请求的交互关系超图。具体步骤包括:
(3.1)遍历项目所有拉取请求,获取拉取请求集合与开发者集合,并将拉取请求和开发者初始化为超图节点。
(3.2)根据项目中开发者在拉取请求中的提交代码记录,构建拉取请求与开发者超边,该情况下,开发者是代码提交的开发者,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码提交开发者u超边权重,/>表示拉取请求/>的代码提交者数量,/>表示/>的代码提交者/>的提交次数,/>为/>的代码提交者/>第/>次提交的创建时间,/>表示代码修改总行数,/>是一个经验衰减系数,可以使用它来调整多次commit的开发者对超边权重的影响力。
(3.3)根据开发者的拉取请求审查记录,构建拉取请求与开发者超边,该情况下,开发者是审查者,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码审查者超边权重,/>表示/>的代码审查者数量,/>表示/>的代码审查者/>的审查次数,/>为/>的代码审查者/>第/>次审查的创建时间,/>是衰减系数。
(3.4)根据开发者创建拉取请求记录,构建拉取请求与开发者超边,该情况下,开发者是创建者,并计算该超边权重,具体计算方式如下:
其中,为拉取请求与创建者超边权重,开发者/>创建拉取请求/>,开发者/>也称为拉取请求/>的创建者,/>为拉取请求/>与创建者/>超边权重,/>为创建拉取请求/>的时间,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间。
(3.5)根据开发者在拉取请求中的问题评论记录,构建拉取请求与开发者超边,该情况下,开发者是问题评论者。根据开发者在拉取请求文件变更内容中的审查评论记录,构建拉取请求与开发者超边,并计算该超边权重,该情况下,开发者是审查评论者。具体计算方式如下:
式中,为拉取请求与审查评论者超边权重,/>表示/>的审查评论者数量,/>表示/>的评论者/>的评论次数,/>为/>的评论者/>第/>次评论的创建时间,/>是衰减系数。
(3.6)根据拉取请求的相似度,构建相似拉取请求超边,并将其相似度作为超边权重,具体计算方式如下:
其中,为相似拉取请求超边权重,/>与/>分别为/>与/>的修改文件路径集,/>表示分别隶属于/>与/>的文件/>与文件/>之间的路径距离,/>表示/>的路径数量,/>表示/>的路径数量,/>为创建拉取请求/>的时间,/>为创建拉取请求/>的时间,/>表示文件/>与文件/>的最长公共前缀函数,表示文件/>与文件/>中的最大路径长度。
(4)根据开发者与拉取请求的交互关系超图,获取目标拉取请求的最优超图切向量,作为目标拉取请求的关联值向量;根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,进而输出代码审查者推荐结果,具体包括如下步骤:
(4.1)根据构建好的开发者与拉取请求的交互关系超图,计算超图拉普拉斯矩阵;
(4.2)初始化待推荐代码审查者的目标拉取请求为向量/>,求/>在超图拉普拉斯矩阵中寻找到损失函数/>最低的关联值向量/>计算方式如下:
其中,f为关联值向量,为有监督的经验误差,/>为超图分割标准化的损失函数,使用该公式计算最优超图切向量,求得一个最优解/>
其中,λ是用于权衡标准化损失与经验损失的正参数,为矩阵/>的/>次方,/>为顶点度矩阵,/>为超边度矩阵,H为超图的关联矩阵,W为记录各超边权重的对角矩阵,A为超图的邻接矩阵,L=I-A为超图的标准化拉普拉斯矩阵。
(5)根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果。
(5.1)对于目标拉取请求,考虑面向降低知识流失风险进行代码审查者推荐,具体计算方式如下式:
其中表示开发者/>的保留率,/>表示开发者/>对待推荐拉取请求在不考虑降低知识流失风险时的得分,/>指待推荐拉取请求/>涉及到的修改文件中风险文件的数量,/>表示拉取请求/>修改文件集合,/>为/>中的风险文件,/>,/>是超参数,/>、/>、/>分别为/>作为代码审查者、代码提交者、审查评论者的候选推荐得分,/>分别表示各得分所占权重,若候选人/>不曾扮演过某类角色,则对应的得分为0;/>
(5.2)在降低知识流失风险的基础上,考虑开发者工作负载平衡策略,候选人推荐得分计算公式如下所示:
式中,表示候选人/>当前工作负载在所有候选人中的排名的比例情况,表示当前候选人/>当前工作负载在所有候选人中的排名数,/>表示候选人总数,/>表示候选人当前工作负载总量,包括观察期内代码审查工作负载评估、代码修改工作负载评估、遗留任务工作负载预估,如果候选人恰好是待推荐拉取请求的代码提交者,则需要为其加上这部分负载,/>表示候选人是待推荐拉取请求的代码提交者,/>表示候选人不是待推荐拉取请求的代码提交者,/>表示代码审查工作负载,/>表示代码修改工作负载,/>表示遗留任务工作负载,/>表示待推荐拉取请求的代码提交负载,/>为预设的超参数,用以调整负载审查者比例。
在一示例性实施例中,包括一种存储介质,存储介质上存储有数据处理程序,数据处理程序被处理器执行时实现上述的一种代码审查者推荐方法的步骤。
参考图2,在一示例性实施例中,包括包括一种电子设备,包括至少一处理器、至少一存储器、以及至少一通信总线。
其中,存储器上存储有计算机程序,计算机程序包括计算机可读指令,处理器通过通信总线调用存储器中存储的计算机可读指令,执行上述的一种代码审查者推荐方法。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种代码审查者推荐方法,其特征在于,包括:
基于开源软件项目中拉取请求与开发者间的协作行为,将开源软件项目中的文件按照文件安全等级分为风险文件和安全文件,并计算开发者保留率,以文件安全等级和开发者保留率作为知识流失风险计算的指标,具体为:
定义一段时间为一个观察期,统计观察期内开源软件项目文件与开发者基于代码提交、代码审查和审查评论的交互行为次数,将观察期内交互行为次数低于规定阈值的开源软件项目文件定义为风险文件,交互行为次数大于等于规定阈值的开源软件项目文件为安全文件;
基于开发者在过去一年的交互行为数据,计算开发者保留率
其中,表示开发者/>在过去一年中有交互行为的月份数量,/>,/>,/>分别是开源项目数据集开始时间、结束时间以及开发者/>最后一次活跃时间,/>,/>,/>分别是开发者/>在过去一年留下的审查评论数量、审查记录数以及代码提交数,/>是开发者的数量;
基于开源软件项目中拉取请求与开发者间的协作行为,获取开源软件项目的开发者工作负载;所述开发者工作负载包括代码审查工作负载、代码修改工作负载、遗留任务工作负载,如果候选人是待推荐拉取请求的代码提交者,开发者工作负载还包括目标拉取请求的待审查工作负载;
基于开源软件项目中拉取请求与开发者间的协作行为构建超边,并计算超边权重,获取开发者与拉取请求的交互关系超图,具体为:
遍历项目所有拉取请求,获取拉取请求集合与开发者集合,并将拉取请求和开发者初始化为超图节点;
根据项目中开发者在拉取请求中的提交代码记录,构建拉取请求与代码提交开发者超边,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码提交开发者超边权重,/>表示拉取请求的代码提交者数量,/>表示/>的第m个代码提交者的提交次数,/>为/>的第m个代码提交者第/>次提交的创建时间,/>表示代码修改总行数,/>是一个经验衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者的拉取请求代码审查记录,构建拉取请求与代码审查者超边,并计算该超边权重,具体计算方式如下:
式中,表示拉取请求/>与代码审查者超边权重,/>表示/>的代码审查者数量,/>表示/>的第m个代码审查者的审查次数,/>为/>的第m个代码审查者第/>次审查的创建时间,/>是衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者创建拉取请求记录,构建拉取请求与创建者超边,并计算该超边权重,具体计算方式如下:
其中,为拉取请求与创建者超边权重,开发者/>创建拉取请求/>,开发者/>也称为拉取请求/>的创建者,/>为拉取请求/>与创建者/>超边权重,/>为创建拉取请求/>的时间,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据开发者在拉取请求中的问题评论记录,构建拉取请求与问题评论者超边,根据开发者在拉取请求文件变更内容中的审查评论记录,构建拉取请求与审查评论者超边,并计算该超边权重,具体计算方式如下:
式中,为拉取请求与审查评论者超边权重,/>表示/>的审查评论者数量,/>表示/>的第m个评论者的评论次数,/>为/>的第m个评论者第/>次评论的创建时间,/>是衰减系数,/>表示开源项目数据集结束时间,/>表示开源项目数据集开始时间;
根据拉取请求的相似度,构建相似拉取请求超边,并将其相似度作为超边权重,具体计算方式如下:
其中,为相似拉取请求超边权重,/>与/>分别为拉取请求/>与/>的修改文件路径集,/>表示分别隶属于/>与/>的文件/>与文件/>之间的路径距离,/>表示/>中的路径数量,/>表示/>中的路径数量,/>为创建拉取请求/>的时间,/>为创建拉取请求/>的时间,/>表示文件/>与文件/>的最长公共前缀函数,表示文件/>与文件/>中的最大路径长度;
根据开发者与拉取请求的交互关系超图,获取目标拉取请求的最优超图切向量,作为目标拉取请求的关联值向量,具体为:
根据开发者与拉取请求的交互关系超图,计算超图拉普拉斯矩阵,初始化待推荐代码审查者的目标拉取请求为向量/>,求/>在超图拉普拉斯矩阵中寻找到损失函数/>最低的关联值向量/>,/>为目标拉取请求的关联值向量,计算方式如下:
其中,f为关联值向量,为有监督的经验误差,/>为超图分割标准化的损失函数,λ是用于权衡标准化损失与经验损失的正参数,/>为矩阵/>的/>次方,/>为顶点度矩阵,/>为超边度矩阵,H为超图的关联矩阵,W为记录各超边权重的对角矩阵,A为超图的邻接矩阵,L=I-A为超图的标准化拉普拉斯矩阵;
根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果。
2.根据权利要求1所述的一种代码审查者推荐方法,其特征在于,代码审查工作负载具体为:
拉取请求相关的提交记录先于拉取请求创建时,将代码审查完成时间与拉取请求创建时间的差值作为代码审查工作负载;
拉取请求相关的提交记录后于拉取请求创建时,将代码审查完成时间与拉取请求相关的提交记录时间的差值作为代码审查工作负载;
拉取请求审查时间超过设定值,将对应拉取请求相关的提交记录的修改文件集在其他代码审查记录中的平均审查时长之和作为代码审查工作负载。
3.根据权利要求1所述的一种代码审查者推荐方法,其特征在于,代码修改工作负载具体为:
仅存在一次代码提交记录,或者两次代码提交间隔超过设定值,将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载,其中行平均代码修改时间是已完成的所有代码修改的所有文件的每行代码修改时间的平均值;
对于采纳代码审查意见后重新提交修改代码的开发者,将两次代码提交时间差作为代码修改工作负载;
对持续依次参与多个拉取请求的开发者,以连续两个拉取请求涉及的提交记录的时间差作为代码修改工作负载,若时间差超过设定值,则将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载;
对同时参与多个拉取请求的开发者,若平均代码行修改工作量超过3天,则将项目团队中的行平均代码修改时间与修改代码行的乘积作为代码修改工作负载,否则直接计算两次代码提交创建时间差作为代码修改工作负载。
4.根据权利要求1所述的一种代码审查者推荐方法,其特征在于,遗留任务工作负载具体为:
遗留任务指观察期内已进入审查阶段但尚未完成审查的拉取请求遗留的工作任务,将遗留任务涉及的所有文件在已进行的审查过程中的代码审查工作负载在审查记录中的审查时间总和作为遗留任务工作负载。
5.根据权利要求1所述的一种代码审查者推荐方法,其特征在于,目标拉取请求的待审查工作负载具体为:
根据拉取请求的修改文件在历史审查记录中的工作负载情况,计算拉取请求所涉及代码修改的行平均审查工作负载,将拉取请求所涉及代码修改的行平均审查工作负载与待审查的修改行乘积作为目标拉取请求的待审查工作负载。
6.根据权利要求1所述的一种代码审查者推荐方法,其特征在于,根据目标拉取请求的关联值向量,以降低知识流失风险和平衡开发者工作负载为目的选择推荐排序策略,计算候选审查者推荐得分,输出代码审查者推荐结果,具体为:
对于目标拉取请求,考虑面向降低知识流失风险进行代码审查者推荐,具体计算方式如下式:
其中,表示对于目标拉取请求,考虑面向降低知识流失风险进行代码审查者推荐得分,/>表示开发者/>的保留率,/>表示开发者/>对待推荐拉取请求/>在不考虑降低知识流失风险时的得分,/>指待推荐拉取请求/>涉及到的修改文件中风险文件的数量,/>表示拉取请求/>修改文件集合,/>为/>中的风险文件,/>,/>是超参数,/>分别为/>作为代码审查者、代码提交者、审查评论者的候选推荐得分,/>分别表示各得分所占权重,若候选人/>不曾扮演过某类角色,则对应的得分为0;
在降低知识流失风险的基础上,考虑开发者工作负载平衡策略,候选人推荐得分计算公式如下所示:
式中,表示在降低知识流失风险的基础上,考虑开发者工作负载平衡策略,候选人推荐得分,/>表示候选人/>当前工作负载在所有候选人中的排名的比例情况,/>表示当前候选人/>当前工作负载在所有候选人中的排名数,/>表示候选人总数,/>表示候选人当前工作负载总量,/>表示候选人是待推荐拉取请求的代码提交者,/>表示候选人不是待推荐拉取请求的代码提交者,/>表示代码审查工作负载,/>表示代码修改工作负载,/>表示遗留任务工作负载,/>表示待审查工作负载,/>为预设的超参数,用以调整负载审查者比例。
7.一种存储介质,其特征在于,所述存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至6中任一项所述的方法的步骤。
8.一种电子设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括计算机可读指令,所述处理器被配置用于调用所述计算机可读指令,执行如权利要求1至6任一项所述的方法。
CN202410004133.XA 2024-01-03 2024-01-03 一种面向多样性的代码审查者推荐方法及存储介质、设备 Active CN117495064B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410004133.XA CN117495064B (zh) 2024-01-03 2024-01-03 一种面向多样性的代码审查者推荐方法及存储介质、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410004133.XA CN117495064B (zh) 2024-01-03 2024-01-03 一种面向多样性的代码审查者推荐方法及存储介质、设备

Publications (2)

Publication Number Publication Date
CN117495064A CN117495064A (zh) 2024-02-02
CN117495064B true CN117495064B (zh) 2024-05-14

Family

ID=89683420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410004133.XA Active CN117495064B (zh) 2024-01-03 2024-01-03 一种面向多样性的代码审查者推荐方法及存储介质、设备

Country Status (1)

Country Link
CN (1) CN117495064B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904802B1 (en) * 2005-08-31 2011-03-08 Parasoft Corporation System and method for software code review
CN108171485A (zh) * 2018-02-01 2018-06-15 中国人民解放军国防科技大学 一种基于软件关联库的跨项目审查者推荐方法
WO2020018251A1 (en) * 2018-07-19 2020-01-23 Microsoft Technology Licensing, Llc Source code file recommendation notification
CN111915216A (zh) * 2020-08-14 2020-11-10 南京大学 基于二次注意力机制的开源软件项目开发人员推荐方法
WO2022269511A1 (en) * 2021-06-23 2022-12-29 Servicenow Canada Inc. Method and system for training model to perform link prediction in knowledge hypergraph
CN116051210A (zh) * 2023-02-17 2023-05-02 华东师范大学 一种基于GitHub社交技术网络的开发者推荐方法
CN116108232A (zh) * 2023-02-07 2023-05-12 武汉大学 代码审核推荐方法、装置、设备及存储介质
CN116611074A (zh) * 2023-07-17 2023-08-18 北京奇虎科技有限公司 安全信息审查方法、设备、存储介质及装置
CN117236624A (zh) * 2023-09-25 2023-12-15 武汉大学 一种基于动态图的Issue修复者推荐方法与装置
CN117291665A (zh) * 2023-09-25 2023-12-26 浪潮通用软件有限公司 基于微服务的开发者社区运营方法、系统、设备和介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289503A1 (en) * 2004-06-29 2005-12-29 Gregory Clifford System for identifying project status and velocity through predictive metrics
US20070180522A1 (en) * 2006-01-30 2007-08-02 Bagnall Robert J Security system and method including individual applications
US11379219B2 (en) * 2018-11-19 2022-07-05 Security Compass Technologies Ltd. Automation of task identification in a software lifecycle
US11610173B2 (en) * 2019-06-13 2023-03-21 Sri International Intelligent collaborative project management
CN117391503A (zh) * 2023-10-09 2024-01-12 北京航空航天大学 一种基于异构超图的代码审阅者推荐方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904802B1 (en) * 2005-08-31 2011-03-08 Parasoft Corporation System and method for software code review
CN108171485A (zh) * 2018-02-01 2018-06-15 中国人民解放军国防科技大学 一种基于软件关联库的跨项目审查者推荐方法
WO2020018251A1 (en) * 2018-07-19 2020-01-23 Microsoft Technology Licensing, Llc Source code file recommendation notification
CN111915216A (zh) * 2020-08-14 2020-11-10 南京大学 基于二次注意力机制的开源软件项目开发人员推荐方法
WO2022269511A1 (en) * 2021-06-23 2022-12-29 Servicenow Canada Inc. Method and system for training model to perform link prediction in knowledge hypergraph
CN116108232A (zh) * 2023-02-07 2023-05-12 武汉大学 代码审核推荐方法、装置、设备及存储介质
CN116051210A (zh) * 2023-02-17 2023-05-02 华东师范大学 一种基于GitHub社交技术网络的开发者推荐方法
CN116611074A (zh) * 2023-07-17 2023-08-18 北京奇虎科技有限公司 安全信息审查方法、设备、存储介质及装置
CN117236624A (zh) * 2023-09-25 2023-12-15 武汉大学 一种基于动态图的Issue修复者推荐方法与装置
CN117291665A (zh) * 2023-09-25 2023-12-26 浪潮通用软件有限公司 基于微服务的开发者社区运营方法、系统、设备和介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Automated Data-Processing Function Identification Using Deep Neural Network;HONGYU KUANG;IEEE/IEE Electronic Library (IEL) 数据库;20200531;第55411-55423页 *
RGPS制导的按需服务组织与推荐方法;刘建晓 等;计算机学报;20130930;第36卷(第2期);第238-251页 *

Also Published As

Publication number Publication date
CN117495064A (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
Dotoli et al. Multi-Criteria Decision Making techniques for the management of public procurement tenders: A case study
Mačiulytė-Šniukienė et al. Impact of information and telecommunication technologies development on labour productivity
Grant et al. How does EuroSCORE II perform in UK cardiac surgery; an analysis of 23 740 patients from the Society for Cardiothoracic Surgery in Great Britain and Ireland National Database
Ernst et al. Determinants of patent value: Insights from a simulation analysis
US20170372389A1 (en) Adaptive and tunable risk processing system and method
Abotaleb et al. Construction bidding markup estimation using a multistage decision theory approach
Xu et al. SATzilla2009: an automatic algorithm portfolio for SAT
CN111784486A (zh) 业务风险预测模型的构建方法、装置和计算机设备
CN110751355A (zh) 一种科技成果评估方法和装置
Cabral et al. Collateral damage? Labour market effects of competing with China—at home and abroad
Hananto et al. Analysis of the Best Employee Selection Decision Support System Using Analytical Hierarchy Process (AHP)
Byanjankar Predicting credit risk in Peer-to-Peer lending with survival analysis
Jaillet et al. Strategic workforce planning under uncertainty
Chen et al. A Mechanism Design Approach for Multi-party Machine Learning
CN116468273A (zh) 客户风险识别方法及装置
CN114881485A (zh) 一种基于层次分析法和云模型的企业资金风险评估方法
Frydman et al. Random survival forest for competing credit risks
CN117495064B (zh) 一种面向多样性的代码审查者推荐方法及存储介质、设备
Harman et al. How to use a multicriteria comparison procedure to improve modeling competitions: A comment on Erev et al.(2017).
Park et al. Correlations between construction firm value and top management characteristics
Ben-David et al. Supplier ranking by multi-alternative proposal analysis for agile projects
CN111382909A (zh) 基于生存分析模型扩展坏样本的拒绝推断方法及相关设备
Kołodziej et al. Control sharing analysis and simulation
CN107240019A (zh) 评估用户业务偏好方法、用户投资风险偏好方法及装置
KR101836806B1 (ko) 해양 수산 분야의 특성을 반영한 기술력 평가 모델 생성 방법 및 그 장치

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