论文部分内容阅读
近年来,基于大规模开发者自由参与的开源软件逐渐演化为协同开发社区和知识分享社区相融合的开源生态系统,获得巨大成功。但是,对具体的开源项目而言,能否建立外部开发者与开源项目之间的精准适配、为开源代码提供丰富的描述文档,从而吸引大量外部开发者群体快速参与、持续贡献是影响其不断发展的决定性因素。然而,由于开源软件数量庞大且与日俱增、开发者自主参与且行为多样、开源项目代码复杂且缺乏规范文档,如何为开源项目推荐合适的开发者,进一步地为开发者提供丰富的信息,从而引导其快速参与贡献是当前面临的关键挑战。针对上述挑战,本文提出了基于开发者的代码贡献信息以及跨社区的多样化行为信息的开发者推荐算法,以及一种基于深度学习和自然语言处理的代码自动摘要方法。具体创新点如下:1、基于代码开发行为的开发者推荐算法。代码开发历史行为直接反映了开发者的技术兴趣点以及技术能力水平,是实现开发者与开源项目准确适配的关键要素。基于这样的考虑,本文利用代码贡献协同网络,通过开发者的提交次数评估每名开发人员与开源项目之间的关联程度,设计并实现了加权的协同过滤推荐算法,在此基础上,为了解决协同过滤算法的“冷启动”问题,我们补充了基于文本匹配的推荐算法,利用开源项目描述信息中抽取的技术关键词构造每名开发人员的技术关注向量。在此基础上,我们利用GitHub社区中超过2800万的开源项目以及超过1000万的开发者进行实验,验证了我们算法的有效性。2、基于跨社区多样化行为的开发者推荐算法。随着开源生态的发展,开发者参与开源的方式、渠道越来越多样化,为准确、全面地分析开发者的兴趣与能力带来了机遇。开发者的行为已经不仅仅局限在类似GitHub这样的协同开发社区中的协同开发行为(包括:提交缺陷报告、代码变更、评论信息等),已有研究表明在类似StackOverflow这样的知识分享社区中也存在大量的开发者技术讨论行为,并且两类社区中存在密切关联。基于这样的背景,我们考虑通过扩充开发者行为来提升贡献者推荐准确度。我们利用了 GitHub和StackOverflow两个社区中关联的7万多个用户,以及GitHub中超过130万的开源项目和StackOverflow中近800万的帖子进行实验,实验验证了我们的推荐方法在一定程度上可以提升推荐的准确度。3、面向贡献者引导的自动化代码摘要方法。开源项目由于其贡献者多,代码风格多样,加之代码注释率较低,因此对于外围开发者很难快速理解并参与到项目贡献中,这会在一定程度上打消贡献者的积极性,导致人才的流失,制约项目的发展。为了引导贡献者参与到项目贡献中,我们结合传统的自然语言处理方法与深度神经网络的方法,提出了适用于开源项目API的自动化代码摘要方法。我们利用了 GitHub中Fork数目最多的前100个开源项目,抽取了超过16万的API代码和自然语言的对应关系,训练并验证了我们的方法。