返回
Learning to represent code changes
DOI:10.1007/s10664-025-10763-6.png)
摘要
En 中文
代码变更表示在自动化众多软件工程任务中扮演着关键角色,例如对代码变更正确性进行分类或生成代码变更的自然语言摘要。近期研究利用深度学习来获取有效的代码变更表示,主要关注捕获令牌序列或抽象语法树(AST)中的变更。然而,这些当前最先进的表示并未显式计算变更在AST上引起的意图语义,也未有效探索被修改行的周围上下文信息。为解决此问题,我们提出了一种新的代码变更表示方法学Patcherizer(我们称之为我们的工具)。该创新方法探索了上下文和结构的意图特征,结合了代码变更周围的上下文以及两种新的表示。这些新表示捕获了代码变更中的序列意图和代码变更前后AST图结构变更中的图意图。这种全面的表示使我们能更好地捕获代码变更的潜在意图。Patcherizer基于图卷积神经网络对意图图的结构输入表示,基于Transformer对意图序列表示。我们在三个任务上评估了Patcherizer学习到的嵌入的泛化能力:(1) 生成自然语言中的代码变更描述,(2) 在程序修复中预测代码变更正确性,(3) 检测代码变更意图。实验结果表明,学习到的代码变更表示对所有三个任务均有效,且性能优于当前最先进(SOTA)方法。例如,在流行的代码变更描述生成任务(即提交信息生成)中,Patcherizer在BLEU、ROUGE-L和METEOR指标上分别实现了平均19.39%、8.71%和34.03%的提升。
Keyword:
Code change representation
Code change correctness
Message generation
期刊
IF:
3.6
论文数:
2.0K
被引数:
5.3K
机构
引用论文
An Attention-Seq2Seq Model Based on CRNN Encoding for Automatic Labanotation Generation from Motion Capture Data基于CRNN编码的Attention-Seq2Seq模型,用于从动作捕捉数据中自动生成Labanotation
CoreGen: Contextualized Code Representation Learning for Commit Message Generation
NEUROCOMPUTING
IF6.5

