程序翻译是将一种语言迁移传统代码迁移到以不同语言构建的生态系统中的重要工具。在这项工作中,我们是第一个采用深层神经网络来解决这个问题的人。我们观察到程序翻译是一个模块化过程,其中每个步骤将源树的子树翻译成相应的目标子树 ...
将 Transformer 体系结构应用于源代码时,设计良好的自我发挥机制至关重要,因为它会影响源代码的抽象语法树(ASTS)提取节点关系的方式。我们提出了代码结构Aware Transformer(CSA-Trans),该 Transformer (CSA-Trans)使用代码结构嵌入式(CSE)为AST中的每个节点生成特定的PE。 CSE使用分离的注意力生成节点位置编码(PE) ...
由于预先训练的模型可以使许多代码智能任务自动化,因此,广泛使用的范式是为每种编程语言对任务数据集中的模型进行微调。最近的一项研究报告说,多语言微调有利于一系列任务和模型。但是,我们发现多语言微调会导致最近模型Unixcoder和Codet5的性能降解 ...
编写代码时,大多数程序员会犯错误。这些错误中的一些很小,几乎不需要对原始程序进行编辑 - 最近将一类错误的错误称为“最后一英里错误”。这些错误打破了经验丰富的开发人员的流程,并且可以使新手程序员陷入困境 ...
生成描述程序功能的可读摘要称为源代码摘要。在此任务中,通过建模代码 Token 之间的成对关系以捕获其长期依赖性是至关重要的。为了学习汇总的代码表示形式,我们探索了使用自我发挥机制的 Transformer 模型,并已证明可以有效捕获长期依赖性 ...
源代码(上下文)及其解析的抽象语法树(AST;结构)是同一计算机程序的两个补充表示。传统上,机器学习模型的设计师主要依赖于结构或背景。我们提出了一个新模型,该模型共同学习源代码的上下文和结构 ...
代码摘要可帮助开发人员理解程序并减少在软件维护过程中推断程序功能的时间。最近的努力诉诸深度学习技术,例如序列到序列模型,用于生成准确的代码摘要,其中基于 Transformer 的方法已实现了有希望的性能。但是,在此任务域中有效地将代码结构信息集成到 Transformer 中的情况不足 ...
代码摘要(CS)正在成为最近语言理解中的一个有前途的领域,该领域旨在以源代码的形式自动生成明智的人类语言,以自动为编程语言生成,以最方便地开发程序员。众所周知,编程语言是高度结构化的。因此,先前的工作试图应用基于结构的遍历(SBT)或非序列模型,例如TREEL-LSTM和Graph Neural Network(GNN)来学习结构程序语义 ...
代码摘要是源代码的简短自然语言描述。摘要通常只有一个句子,但构成了开发人员文档的骨干。诸如“将所有可见多边形更改为颜色蓝色”之类的简短描述可以使程序员在不读取代码本身的情况下对代码执行什么代码的高级想法 ...
随着嵌入在自然语言处理中的最新成功,已经进行了研究将类似方法应用于代码分析。大多数作品都试图直接处理代码或使用句法树表示,将其视为用自然语言写的句子。但是,由于诸如函数调用,分支和可互换的语句顺序之类的结构特征,现有的方法都不足以鲁棒地理解程序语义 ...