中文

通过代码变换深入审视基于 Transformer 的代码智能:挑战与机遇

软件工程 2025-06-10 v2

摘要

基于 Transformer 的模型在许多智能编码任务(如代码注释生成和代码补全)中展现了最先进的性能。先前研究表明深度学习模型对输入变化敏感,但鲜有研究系统考察 Transformer 在受扰输入代码下的鲁棒性。本工作中,我们实证研究了保语义代码变换对 Transformer 性能的影响。具体而言,针对 Java 和 Python 两种流行编程语言分别实现了 24 和 27 种代码变换策略。为便于分析,这些策略被归为五类:块变换、插入/删除变换、语法语句变换、语法 token 变换和标识符变换。在代码补全、代码摘要和代码搜索三个流行代码智能任务上的实验表明,插入/删除变换和标识符变换对 Transformer 性能影响最大。我们的结果还表明,基于抽象语法树(ASTs)的 Transformer 在大多数代码变换下比仅基于代码序列的模型表现出更强的鲁棒性。此外,位置编码的设计会影响 Transformer 在代码变换下的鲁棒性。基于我们的发现,我们提炼出关于基于 Transformer 的代码智能所面临挑战与机遇的一些见解。

关键词

引用

@article{arxiv.2207.04285,
  title  = {A Closer Look into Transformer-Based Code Intelligence Through Code Transformation: Challenges and Opportunities},
  author = {Yaoxian Li and Shiyi Qi and Cuiyun Gao and Yun Peng and David Lo and Zenglin Xu and Michael R. Lyu},
  journal= {arXiv preprint arXiv:2207.04285},
  year   = {2025}
}

备注

This paper was accepted by TSE (https://ieeexplore.ieee.org/document/10843180/). It incorporates substantial enhancements, deeper analysis, and more detailed discussions resulting from the peer review process (major and minor revisions) compared to the initial arXiv preprint, which had limitations and shallower discussions