CCT5:一种面向代码变更的预训练模型
软件工程
2023-05-19 v1
摘要
软件在不断变化,要求开发者及时执行若干衍生任务,例如为代码变更意图撰写描述,或识别易出缺陷的代码变更。考虑到处理这些任务的成本可占总开发支出的很大比例(通常约 70%),自动化此类过程将显著减轻开发者负担。为实现该目标,现有方法主要依赖从头训练深度学习模型或在此类任务上微调现有预训练模型,二者均有缺陷。具体而言,前者使用规模相对较小的标注数据训练,难以学习并利用海量无标注代码中所隐藏的编程语言领域知识;后者难以充分利用预训练模型所学知识,因为现有预训练模型设计用于编码单一代码段而非代码变更(即两段代码段之间的差异)。我们提出预训练一个专为代码变更设计的模型,以更好地支持开发者的软件维护工作。为此,我们首先收集包含 150 万+ 代码变更与提交信息成对数据的大规模数据集。基于这些数据,我们策划了五种不同预训练任务,使模型具备关于代码变更的多样领域知识。我们在三种广泛研究的代码变更引发的任务以及两种特定于代码评审过程的任务上微调预训练模型 CCT5。结果表明,CCT5 在这些任务上优于传统深度学习方法与现有预训练模型。
引用
@article{arxiv.2305.10785,
title = {CCT5: A Code-Change-Oriented Pre-Trained Model},
author = {Bo Lin and Shangwen Wang and Zhongxin Liu and Yepang Liu and Xin Xia and Xiaoguang Mao},
journal= {arXiv preprint arXiv:2305.10785},
year = {2023}
}