基于内容的拉取请求检查清单生成方法研究
作者单位:吉林大学
学位级别:硕士
导师姓名:刘华虓
授予年度:2024年
学科分类:12[管理学] 1201[管理学-管理科学与工程(可授管理学、工学学位)] 081203[工学-计算机应用技术] 081104[工学-模式识别与智能系统] 08[工学] 0835[工学-软件工程] 0811[工学-控制科学与工程] 0812[工学-计算机科学与技术(可授工学、理学学位)]
主 题:GitHub 拉取请求 检查清单 多标签分类 摘要生成
摘 要:基于拉取的开发模式(pull-based development model)被广泛应用于GitHub等开源软件平台中。在这种开发模式中,贡献者通过分叉操作(fork)克隆项目并提交拉取请求(Pull Request,PR),向该项目仓库提出代码更改建议,接着由审核人员检查代码变更,并评估该PR能否被合并(merge)到项目中。这种开发模式平衡了开发人员的工作量,活跃了开源社区,为分布式开发中的全球协作提供了动力。 与此同时,大量的外部贡献者也为开源软件平台带来了一些问题,其中一个主要问题是PR的质量参差不齐。在很多情况下,不熟悉项目的新人贡献者在撰写PR时可能会提供不充分或不准确的信息,这导致了额外的沟通成本,降低了协作流程的效率。为了确保PR的质量,项目维护者会在拉取请求模板(Pull Request Template,PRT)中制定一系列检查清单(checklist),用于提醒或告知贡献者在提交PR时的注意事项,或是在贡献指南文档(Contributing guidelines)中向外部贡献者详细介绍参与项目的具体流程。 然而,经过调研本文发现,在目前的GitHub项目中,PR检查清单的使用率并不高,而贡献指南因其内容复杂,篇幅较长,难以被迅速理解。为了解决这一问题,本文提出了一种基于注意力机制的PR检查清单生成方法,旨在将贡献指南中的大段信息总结为更便于理解和查阅的检查清单。首先,本文通过一项实证研究考察了3266个GitHub项目,并通过分析检查清单与项目成熟度的关系,强调了该模块对项目发展的积极影响。在真实文档数据的基础上,通过对内容主题和条目数量的设计,本文归纳了一个包含9项主题条目的通用检查清单模板,作为后续生成工作的基础。随后,本文通过对文档内容结构的分析,将贡献指南划分成若干独立段落,并使用基于BERT的多标签分类器,从中提取与检查清单相关的内容,将对应段落分配到特定的检查清单主题文件中。最后,本文将条目生成这一信息精炼过程视作摘要生成任务,采用基于Transformer编码器-解码器结构的摘要生成模型,将每个主题文件总结为简短概要的条目,并输出一个包含一系列主题条目的检查清单。 本文基于真实的GitHub项目数据集开展了一系列实验评估本文提出的生成方法的性能。评估结果表明,在段落分类任务上,本文方法的准确率达到了92.13%,明显优于其他基线方法。在条目生成任务上,本文方法在ROUGE指标下的各项性能表现对比基线方法平均提升了9%左右。此外,本文还通过向项目提交本文方法的生成结果来验证它在真实世界中的性能,根据开发者的积极反馈表明,本文提出的方法能够有效地满足开源软件开发者的实际需求,并从一定程度上促进开源项目更加高效地开发和维护。