数据与相关代码见文末
1.概述
源代码与自然语言之间的语义鸿沟是生成高质量代码提交信息的一个重大挑战。代码提交信息对于开发者来说非常重要,因为它们简明扼要地描述了代码更改的高层次意图,帮助开发人员无需深入了解具体实现即可掌握软件的演变过程。手动编写高质量的提交信息对开发者来说是额外的负担,特别是在大型项目中,这种负担尤为明显。
目前,已有多种方法尝试解决这一问题。早期的研究通常采用预定义的模板来生成提交信息,但这种方法需要人工定义模板,且对无法匹配这些模板的提交可能无法生成有意义的信息。随后,基于信息检索的技术开始被应用于从现有提交信息中检索合适的信息。然而,这些方法在变量和函数名不一致的情况下效果有限。
近年来,随着神经机器翻译(NMT)技术的进步,研究人员开始将提交信息生成视为一种代码到文本的翻译任务,使用深度神经网络来建模代码提交与提交信息之间的关系。然而,现有的研究存在一些局限性,如采用静态嵌入方式,不关注代码的上下文信息,无法准确捕捉代码变化的语义。
CoreGen 提出了一个两