LLM2D
大型语言模型对代码的理解准确度how accurate are large language models in understanding code?
How Accurately Do Large Language Models Understand Code?
作者: Sabaat Haroon, Ahmad Faraz Khan, Ahmad Humayun, Waris Gill, Abdul Haddi Amjad, Ali R. Butt, Mohammad Taha Khan, Muhammad Ali Gulzar
发布日期: 4/11/2025
arXiv ID: oai:arXiv.org:2504.04372v2

摘要

arXiv:2504.04372v2 宣布类型: 替换-交叉 摘要:大型语言模型(LLMs)在代码修复和测试等后开发任务中越来越被使用。这些任务的成功关键在于模型对代码的深刻理解。然而,LLMs 真正理解代码的程度至今仍然很少受到评估。量化代码理解难度在于其抽象性质以及缺乏标准化的度量标准。此前,这主要通过开发者调查来评估,但对于评估LLMs来说并不可行。现有的LLM基准主要集中在代码生成上,这与代码理解本质上不同。此外,固定的基准很快就会过时,因为它们成为了训练数据的一部分。本文提出了首次大规模实证研究,探讨LLMs理解代码的能力。受到突变测试的启发,我们使用LLM的故障查找能力作为其对代码的深刻理解的代理。这一方法基于这样一个见解:能够识别细微功能性差异的模型,必须对代码有很好的理解。我们在真实程序中注入故障,并要求LLM定位这些故障,确保规范足以支持故障定位。随后,我们对有故障的程序应用语义保留的代码突变(SPMs),并测试Lans是否仍能找到故障,从而验证其对代码理解的信心。我们在670个Java和637个Python程序的600,010个调试任务上评估了九种流行的LLMs。我们发现,在应用SPMs后,LLMs在78%的有故障的程序中失去了调试同一故障的能力,表明其对代码的理解较浅,并且依赖于与语义无关的特征。我们还发现,LLMs在程序的早期部分比后期更能理解代码。这表明,由于为自然语言设计的分词导致LLMs的代码理解仍然与词汇和语法特征相关,而忽略了代码语义。