中文

一体两面:利用标识符在神经代码理解中的影响

软件工程 2023-02-08 v2

摘要

先前的研究表明,神经代码理解模型对标识符命名十分敏感。通过在源代码中重命名少至一个标识符,模型就会输出完全不相关的结果,这表明标识符可能对模型预测产生误导。然而,标识符并非完全不利于代码理解,因为标识符名称的语义可能与程序语义相关。充分利用标识符这两种相反的影响对于增强神经代码理解的鲁棒性和准确性至关重要,但目前仍鲜有探索。在本工作中,我们提出从一种新颖的因果视角对标识符的影响进行建模,并提出一个名为 CREAM 的基于反事实推理的框架。CREAM 在训练阶段通过多任务学习显式捕获标识符的误导信息,并在推理阶段通过反事实推断降低其误导影响。我们在三个流行的神经代码理解任务上评估 CREAM,包括函数命名、缺陷检测和代码分类。实验结果表明,CREAM 不仅在鲁棒性方面显著优于基线(例如,在函数命名任务的 F1 分数上提升 37.9%),而且在原始数据集上也取得了改进结果(例如,在函数命名任务的 F1 分数上提升 0.5%)。

关键词

引用

@article{arxiv.2207.11104,
  title  = {Two Sides of the Same Coin: Exploiting the Impact of Identifiers in Neural Code Comprehension},
  author = {Shuzheng Gao and Cuiyun Gao and Chaozheng Wang and Jun Sun and David Lo and Yue Yu},
  journal= {arXiv preprint arXiv:2207.11104},
  year   = {2023}
}

备注

Accepted to ICSE'2023