一种开源社区的评审意见推荐方法和装置制造方法及图纸

技术编号:37351263 阅读:15 留言:0更新日期:2023-04-27 07:03
本发明专利技术涉及一种开源社区的评审意见推荐方法和装置,属于评审意见推荐技术领域,解决代码直接作为文本处理,不能提取代码改动中语法结构和语义信息,使得评审意见自动化推荐不准确的问题。该方法包括:从开源社区获取多个贡献请求和多个评审意见;基于每个贡献请求生成贡献请求向量;基于多个评审意见生成评审意见向量;利用贡献请求向量和评审意见向量获取评审意见推荐模型;基于待测试贡献请求生成待测试的贡献请求向量,利用评审意见推荐模型计算待测试的贡献请求向量与多个评审意见的评审意见向量之间的匹配值以推荐匹配值最高的5个评审意见。贡献请求代码向量有效地提取代码改动的语法结构和语义信息,以自动化推荐评审意见。意见。意见。

【技术实现步骤摘要】
一种开源社区的评审意见推荐方法和装置


[0001]本专利技术涉及评审结果预测
,尤其涉及一种开源社区的评审 意见推荐方法。

技术介绍

[0002]开源社区又称开放源代码社区,是开发人员根据相应的开源软件许 可证协议发布软件源代码的平台。Github是目前全球最大的开源社区, 也是全球最大的面向开源及私有软件项目的托管平台。GitHub中,开发 人员通过贡献请求机制在各自分支上进行分布式协作开发,完成对项目 的修改和完善,并将详细的代码修改打包生成贡献请求(贡献请求包括 为代码部分和文本描述部分)。但由于开发人员的能力参差不齐、编程 习惯也不统一,并不是所有的贡献请求都符合开源项目的管理标准。因 此需要评审人通过代码评审机制,挑选符合标准的贡献请求合并到源代 码仓库中。而对于不符合标准的贡献请求,可以指导开发人员继续迭代 修改贡献请求,直到符合项目标准,从而保证开源软件项目的整体质量。
[0003]随着开源社区的流行和高速发展,贡献请求增长速度远超过评审团 队扩张速度,这种数量增长的不一致导致有些贡献请求不能及时得到评 审,这样不仅会影响项目的发展速度,也会打击开发者的贡献积极性。 同时代码评审要求细致且复杂,评审人需要花费大量时间评审贡献请求、 指导贡献者迭代修改,这也导致开源社区评审时间长、贡献汇聚效率低 下。因此,需要一种自动化评审意见推荐方法,在开发者提交贡献请求 之后,可自动化推荐相应的评审意见,为评审人编写评审意见提供参考, 同时也可快速指导开发者进行迭代修改,提高代码评审效率。
[0004]而要实现评审意见自动化推荐,最为关键的就是提取贡献请求中代 码改动的改动信息。贡献请求中代码改动是开发者对开源项目最直接的 修改内容,也是评审人进行代码评审时审查的主要内容。现有技术多是 将代码改动直接作为自然语言文本进行相关处理,这样处理虽然简单方 便,但不能很好地从语法层次提取代码改动中的语法结构和语义信息, 不能有效地为评审意见推荐提供改动信息,从而使得评审意见推荐效果 不够准确。同时评审人在代码评审时还会参考贡献请求的其他文本特征, 比如贡献请求标题、贡献请求描述、提交信息等等,若不全面考虑这些 特征也降低评审意见自动化推荐的有效性。
[0005]经过总结,现有研究都表明了代码评审周期长会打击开发者的积极 性,编写大量的评审意见需要花费评审人大量的时间和精力。同时有效 提取代码改动中的改动信息是实现评审意见推荐的重点内容,因此当前 具有以下几点不足之处:
[0006]1、缺少一种自动化评审意见推荐方法,在开发者提交贡献请求之后 自动化推荐评审意见,可辅助或代替评审人编写评审意见,从而快速指 导开发者迭代修改贡献请求。
[0007]2、现有技术对代码改动的向量生成处理方式不够准确,缺少对代码 改动更加完善的预处理过程,将代码直接作为文本进行处理,不能有效 提取代码改动中丰富的语法结构和语义信息,使得评审意见自动化推荐 不准确。
[0008]3、现有技术缺少对贡献请求其他特征信息的参考和度量,不能有效 提取贡献请求的全部修改内容,和评审人实际评审时所参考的信息有差 异。

技术实现思路

[0009]鉴于上述的分析,本专利技术实施例旨在提供一种开源社区的评审意见 推荐方法和装置,用以解决将代码直接作为文本进行处理,不能有效提 取代码改动中丰富的语法结构和语义信息,使得评审意见自动化推荐不 准确的问题。
[0010]一方面,本专利技术实施例提供了一种开源社区的评审意见推荐方法, 包括:从所述开源社区获取已完成代码评审流程的多个贡献请求并获取 每个贡献请求所包含的多个评审意见;基于所述每个贡献请求生成贡献 请求向量,其中,所述贡献请求向量包括贡献请求文本向量和贡献请求 代码向量;基于所述每个贡献请求所包含的多个评审意见生成评审意见 向量;建立双向长短时记忆网络Bi

LSTM模型,利用所述贡献请求向量 和所述评审意见向量训练所述Bi

LSTM模型,以获取评审意见推荐模型; 以及获取上传至所述开源社区的待测试贡献请求并基于所述待测试贡献 请求生成待测试的贡献请求向量,然后利用所述评审意见推荐模型计算 所述待测试的贡献请求向量与所述多个评审意见的所有评审意见向量之 间的匹配值,以推荐所述匹配值最高的5个评审意见。
[0011]上述技术方案的有益效果如下:贡献请求向量包括贡献请求文本向 量和贡献请求代码向量,能够更加有效地提取代码改动的语法结构和语 义信息,为评审意见自动化推荐提供技术支撑。利用评审意见推荐模型 计算待测试的贡献请求向量与多个评审意见的评审意见向量之间的匹配 值,以推荐匹配值最高的5个评审意见,推荐的评审意见能够辅助或代 替评审人编写真实评审意见,节省评审人的时间;也可以快速指导开发 者迭代修改贡献请求,提高代码评审效率,改善开源生态环境。
[0012]基于上述方法的进一步改进,每个贡献请求包括代码部分和文本描 述部分,其中,基于所述多个贡献请求中每个贡献请求生成贡献请求向 量进一步包括:基于所述每个贡献请求中的文本描述部分生成所述贡献 请求文本向量;以及基于所述每个贡献请求中的代码部分生成所述贡献 请求代码向量。
[0013]基于上述方法的进一步改进,基于所述每个贡献请求中的文本描述 部分生成所述贡献请求文本向量包括:从所述每个贡献请求中的文本描 述部分中提取贡献请求的文本特征;通过自然语言工具包对所述贡献请 求的文本特征进行自然语言预处理,其中,所述自然语言预处理包括分 词、提取词干和去停用词;以及使用TF

IDF方法将预处理的贡献请求的 文本特征转换为所述贡献请求文本向量。
[0014]基于上述方法的进一步改进,所述贡献请求的文本特征包括:贡献 请求标题、贡献请求描述正文、提交作者、提交信息、提交作者年龄、 提交作者的历史提交数量、提交作者的历史提交信息、工具执行结果、 工具执行报告和修改文件路径名。
[0015]基于上述方法的进一步改进,基于所述每个贡献请求中的代码部分 生成所述贡献请求代码向量进一步包括:通过pygments工具对所述代码 部分的代码改动进行预处理,其中,所述代码预处理包括去除注释部分、 去除电子邮箱和签名部分、超链接替换、数字和版本号替换以及复杂变 量名拆分;以及从预处理的代码部分的代码改动提取贡献请求的代码特 征并基于所述代码特征生成所述贡献请求的代码向量,其中,所述贡献 请求的代
码特征包括:字符级别的代码改动序列、单词级别的代码改动 序列、抽象语法级别的代码改动序列、代码改动增加行数和代码改动删 除行数。
[0016]基于上述方法的进一步改进,从预处理的代码部分的代码改动中提 取贡献请求的代码特征并基于所述代码特征生成所述贡献请求的代码向 量进一步包括:按字符形式将预处理的代码部分的代码改动拆分为字符 级别的代码改动序列,以提取代码改动的语义特征;以及将拆分的字符 级别的代码改动序列通过OneHot编码转化为字符级别的代码改动向量。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种开源社区的评审意见推荐方法,其特征在于,包括:从所述开源社区获取已完成代码评审流程的多个贡献请求并获取每个贡献请求所包含的多个评审意见;基于所述每个贡献请求生成贡献请求向量,其中,所述贡献请求向量包括贡献请求文本向量和贡献请求代码向量;基于所述每个贡献请求所包含的多个评审意见生成评审意见向量;建立双向长短时记忆网络Bi

LSTM模型,利用所述贡献请求向量和所述评审意见向量训练所述Bi

LSTM模型,以获取评审意见推荐模型;以及获取上传至所述开源社区的待测试贡献请求并基于所述待测试贡献请求生成待测试的贡献请求向量,然后利用所述评审意见推荐模型计算所述待测试的贡献请求向量与所述多个评审意见的评审意见向量之间的匹配值,以推荐所述匹配值最高的5个评审意见。2.根据权利要求1所述的开源社区的评审意见推荐方法,其特征在于,每个贡献请求包括代码部分和文本描述部分,其中,基于所述多个贡献请求中每个贡献请求生成贡献请求向量进一步包括:基于所述每个贡献请求中的文本描述部分生成所述贡献请求文本向量;以及基于所述每个贡献请求中的代码部分生成所述贡献请求代码向量。3.根据权利要求2所述的开源社区的评审意见推荐方法,其特征在于,基于所述每个贡献请求中的文本描述部分生成所述贡献请求文本向量包括:从所述每个贡献请求中的文本描述部分中提取贡献请求的文本特征;通过自然语言工具包对所述贡献请求的文本特征进行自然语言预处理,其中,所述自然语言预处理包括分词、提取词干和去停用词;以及使用TF

IDF方法将预处理的贡献请求的文本特征转换为所述贡献请求文本向量。4.根据权利要求3所述的开源社区的评审意见推荐方法,其特征在于,所述贡献请求的文本特征包括:贡献请求标题、贡献请求描述正文、提交作者、提交信息、提交作者年龄、提交作者的历史提交数量、提交作者的历史提交信息、工具执行结果、工具执行报告和修改文件路径名。5.根据权利要求2所述的开源社区的评审意见推荐方法,其特征在于,基于所述每个贡献请求中的代码部分生成所述贡献请求代码向量进一步包括:通过pygments工具对所述代码部分的代码改动进行预处理,其中,所述代码预处理包括去除注释部分、去除电子邮箱和签名部分、超链接替换、数字和版本号替换以及复杂变量名拆分;以及从预处理的代码部分的代码改动提取贡献请求的代码特征并基于所述代码特征生成所述贡献请求的代码向量,其中,所述贡献请求的代码特征包括:字符级别的代码改动序列、单词级别的代码改动序列、抽象语法级别的代码改动序列、代码改动增加行数和代码改动删除行数。6.根...

【专利技术属性】
技术研发人员:蒋竞刘征宇张莉
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1