An Empirical Analysis of Static Analysis Methods for Detection and Mitigation of Code Library Hallucinations

📄 arXiv: 2604.07755v1 📥 PDF

作者: Clarissa Miranda-Pena, Andrew Reeson, Cécile Paris, Josiah Poon, Jonathan K. Kummerfeld

分类: cs.CL, cs.SE

发布日期: 2026-04-09


💡 一句话要点

利用静态分析检测和缓解代码库幻觉问题,揭示其能力上限。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 大型语言模型 静态分析 代码库幻觉 软件工程

📋 核心要点

  1. 大型语言模型在生成代码时,尤其涉及库的使用时,容易产生幻觉,生成不存在的库函数或特性。
  2. 本文探索使用静态分析技术来检测和缓解LLM代码生成中的库幻觉问题,评估其有效性和局限性。
  3. 实验表明静态分析能检测部分幻觉,但存在能力上限,并量化了其在不同LLM和数据集上的性能表现。

📝 摘要(中文)

大型语言模型在生成代码时,尤其是在使用代码库时,仍然存在幻觉问题。在需要使用代码库的NL-to-code基准测试中,LLM生成的代码在8.1-40%的响应中使用了不存在的库特性。本文分析了静态分析工具在检测和缓解幻觉方面的潜力,包括它们能解决什么问题以及不能解决什么问题。研究发现,静态分析工具可以检测到16-70%的错误,以及14-85%的库幻觉,性能因LLM和数据集而异。通过人工分析,确定了静态方法无法捕获的情况,从而给出了其潜力的上限,范围为48.5%到77%。总的来说,本文表明静态分析方法是解决某些形式幻觉的廉价方法,并量化了它们距离完全解决问题还有多远。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)在代码生成过程中出现的“库幻觉”问题。具体而言,LLM在生成使用特定代码库的代码时,会错误地使用不存在的库函数、类或方法。现有方法缺乏有效的检测和缓解机制,导致生成的代码无法正常运行或产生错误结果。这种幻觉问题严重影响了LLM在软件开发领域的应用。

核心思路:论文的核心思路是利用静态分析技术来检测LLM生成的代码中是否存在库幻觉。静态分析是指在不实际执行代码的情况下,通过分析代码的结构、语法和语义来发现潜在错误或缺陷的方法。通过将LLM生成的代码与已知的代码库API进行比对,可以识别出使用了不存在的库特性的情况。

技术框架:论文的技术框架主要包括以下几个步骤:1) 使用LLM生成代码,这些代码需要使用特定的代码库;2) 使用静态分析工具对生成的代码进行分析,检测是否存在库幻觉;3) 对静态分析的结果进行评估,计算其检测到的错误比例和幻觉比例;4) 通过人工分析,确定静态分析无法检测到的幻觉类型,从而估计其能力上限。

关键创新:论文的关键创新在于系统性地评估了静态分析技术在检测和缓解LLM代码库幻觉方面的能力。以往的研究主要集中在提高LLM的代码生成能力,而忽略了其可能产生的幻觉问题。本文首次对静态分析在解决这一问题上的潜力进行了量化分析,并揭示了其局限性。

关键设计:论文的关键设计包括:1) 选择合适的静态分析工具,例如能够进行类型检查、API调用验证等功能的工具;2) 构建包含多种代码库和测试用例的数据集,用于评估静态分析的性能;3) 设计合理的评估指标,例如错误检测率、幻觉检测率、误报率等;4) 进行人工分析,对静态分析无法检测到的幻觉类型进行分类和总结。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

研究表明,静态分析工具能够检测到16-70%的总体错误,以及14-85%的库幻觉,具体性能取决于所使用的LLM和数据集。人工分析揭示了静态分析无法捕获的幻觉类型,从而确定了其检测能力的上限为48.5%到77%。这些数据量化了静态分析在解决LLM代码幻觉问题上的有效性和局限性。

🎯 应用场景

该研究成果可应用于提升LLM驱动的自动化代码生成工具的可靠性和实用性。通过集成静态分析模块,可以有效减少生成的代码中因库幻觉导致的错误,提高软件开发效率。此外,该研究也为未来开发更智能的代码生成和验证工具提供了思路,例如结合动态分析、形式化验证等技术,进一步提升代码质量。

📄 摘要(原文)

Despite extensive research, Large Language Models continue to hallucinate when generating code, particularly when using libraries. On NL-to-code benchmarks that require library use, we find that LLMs generate code that uses non-existent library features in 8.1-40% of responses.One intuitive approach for detection and mitigation of hallucinations is static analysis. In this paper, we analyse the potential of static analysis tools, both in terms of what they can solve and what they cannot. We find that static analysis tools can detect 16-70% of all errors, and 14-85% of library hallucinations, with performance varying by LLM and dataset. Through manual analysis, we identify cases a static method could not plausibly catch, which gives an upper bound on their potential from 48.5% to 77%. Overall, we show that static analysis methods are cheap method for addressing some forms of hallucination, and we quantify how far short of solving the problem they will always be.