iSE 团队在源代码摘要研究上取得新进展

发布日期:2024-06-30 浏览次数:


源代码注释在促进代码理解和软件维护方面发挥着重要作用。然而,在快速发展的软件领域,维护和理解代码库是一项艰巨的挑战。每天有数百万行代码被编写和修改,编写代码注释是一项既费力又费时的工作,导致软件演化过中注释往往是缺失的、不匹配的或过时的。源代码摘要旨在研究自动化代码摘要(即注释)生成方法,一直是软件工程领域热门研究方向之一。受到神经机器翻译的启发,基于深度学习的代码摘要技术广泛采用编码器-解码器架构,其中编码器负责将待摘要的编程语言代码转变成上下文向量,然后解码器将上下文向量解码成自然语言摘要。近年来,针对源代码的大规模预训练模型(例如 CodeBERT 和 UniXcoder)配备了能够生成通用上下文向量的编码器,并在代码摘要任务上取得了实质性改进。然而,尽管它们主要针对以代码为中心的任务进行训练,并且可以捕获通用代码特征,但它们在捕获需要摘要的特定特征方面仍然存在不足。


我院 iSE 团队房春荣老师与博士生孙伟松(2023年6月毕业,现为南洋理工大学博士后)创新性地提出了一种基于以摘要为中心的任务来改进代码摘要的新技术ESALE。该技术利用多任务学习范式来训练编码器执行三个以摘要为中心的任务,以增强其学习代码-摘要对齐的能力,包括以摘要为中心的单向语言建模(Unidirectional Language Modeling,ULM)、掩码语言建模(Masked Language Modeling,MLM)和动作词预测(Action Word Prediction,AWP)。设计ULM和 MLM 来预测摘要中的屏蔽词,根据给定的代码片段预测摘要单词将有助于编码器学习代码-摘要对齐关系。进一步引入特定领域任务AWP来增强编码器学习动作词和代码之间对齐的能力。在四个数据集上对ESALE的有效性进行了大规模评估,包括两个广泛使用的数据集 JCSD 和 PCSD、一个跨项目 Java 数据集 CPJD 和一个多语言数据集 CodeSearchNet。实验结果表明,ESALE 在 BLEU、METEOR 和 ROUGE-L 三个广泛使用的指标上都明显优于最先进的基线技术。此外,人工评估证明 ESALE 生成的摘要更具信息量,更接近参考摘要。



该技术通过强化大型预训练编码器学习代码与注释之间特征对齐的能力,提升模型生成代码注释的质量,为充分利用大模型组件提升基于大模型的智能软件工程技术能力提供了参考示范。该技术有利于利用大模型生成高质量代码注释,同时对于提升机器代码理解能力以提高基于大模型的软件需求分析、软件设计与开发以及软件测试能力具有重要意义。相关成果在腾讯基础支撑部门进行应用,效果良好。


这项工作对于该领域的未来发展具有重要的意义,值得研究人员和工业界的持续关注,后续将实现一个面向全球开发者的智能化代码注释生成工具。相关研究成果形成的论文《ESALE: Enhancing Code-Summary Alignment Learning for Source Code Summarization》已被软件工程领域国际顶级期刊IEEE Transactions on Software Engineering(CCF-A类)全文录用。该论文是南京大学与南洋理工大学联合攻关的又一成果,双方将持续深入研究智能软件工程,着力构建代码搜索与代码修复迭代融合、需求与测试双向监督逼近的系统性学术成果和工业应用。