中文

CCBERT:自监督代码变更表示学习

软件工程 2023-09-28 v1

摘要

开发人员在日常工作中进行了大量的代码变更,而为了有效的代码变更分析,需要优质的代码变更表示。最近,Hoang 等人提出了 CC2Vec,一种基于神经网络的方法,学习代码变更的分布式表示以捕捉变更的语义意图。尽管在多个任务中已证明有效,CC2Vec 存在若干局限:1)仅考虑代码变更的粗粒度信息;2)依赖于日志消息而非代码变更自身包含的内容。在本工作中,我们提出 CCBERT(Code Change BERT,代码变更 BERT),一种基于 Transformer 的新预训练模型,基于包含大量无标注代码变更的大规模数据集学习代码变更的通用表示。CCBERT 在我们提出的四个自监督目标上进行预训练,这些目标专用于基于代码变更内容学习代码变更表示。CCBERT 通过学习旧版本和新版本的内容以及编辑动作,在词元级别感知细粒度代码变更。我们的实验表明,CCBERT 在不同指标和任务上显著优于 CC2Vec 或下游任务的最先进方法 7.7%–14.0%。CCBERT 持续优于 CodeBERT 等大型预训练代码模型,同时需要少 6–10×\times 的训练时间、5–30×\times 的推理时间和 7.9×\times 的 GPU 内存。

关键词

引用

@article{arxiv.2309.15474,
  title  = {CCBERT: Self-Supervised Code Change Representation Learning},
  author = {Xin Zhou and Bowen Xu and DongGyun Han and Zhou Yang and Junda He and David Lo},
  journal= {arXiv preprint arXiv:2309.15474},
  year   = {2023}
}

备注

12 Pages; Accepted in the Main Track of The International Conference on Software Maintenance and Evolution (ICSME) 2023