← 最新论文
💻 computer science

Do Code LLMs Do Static Analysis?

该论文通过多项实验发现,代码大语言模型在静态分析任务上表现不佳,且针对静态分析的预训练无法提升其在代码生成、摘要和翻译等代码智能任务中的性能,反之亦然。

原作者: Chia-Yi Su, Collin McMillan

发布于 2026-03-27
📖 1 分钟阅读☕ 轻松阅读

原作者: Chia-Yi Su, Collin McMillan

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇文章探讨了一个非常有趣的问题:现在的 AI 编程助手(代码大模型),真的像人类程序员那样在“思考”代码吗?

为了让你更容易理解,我们可以把这篇论文的研究过程想象成一次**“侦探调查”**。

1. 核心谜题:AI 是在“推理”还是“背课文”?

  • 人类程序员是怎么工作的?
    想象一下,你是一位侦探,要破解一个复杂的案件(写代码)。在动手之前,你会先画一张关系图:谁给谁打电话(调用关系)、谁把线索传给了谁(数据流向)、整个案件的层级结构是怎样的(语法树)。在计算机科学里,这叫**“静态分析”**。人类程序员靠这种“画图”和“推理”来理解代码,而不仅仅是死记硬背。

  • AI 是怎么工作的?
    现在的 AI(比如 GitHub Copilot 或 GPT-4)非常厉害,能写代码、翻译代码、给代码写注释。大家觉得它们像人一样在“推理”。但这篇论文想问:AI 真的在画那张“关系图”吗?还是说它只是像鹦鹉学舌一样,记住了海量代码的“样子”,然后模仿着写出来?

2. 实验设计:给 AI 上“特训班”

为了搞清楚这个问题,研究人员设计了一场**“特训实验”**,就像给 AI 学生上补习班:

  • 任务 A(静态分析): 让 AI 专门练习画“关系图”(生成调用图、数据流图、语法树)。这相当于让 AI 学习如何像侦探一样分析案情。
  • 任务 B(编程任务): 让 AI 做实际的编程工作,比如写代码、翻译代码、给代码写总结。

实验逻辑是:

  1. 如果 AI 真的像人一样思考,那么先学会画“关系图”(任务 A),应该会让它写代码(任务 B)变得更聪明、更准确。
  2. 反过来,如果 AI 在写代码(任务 B)时真的用了“关系图”的思维,那么让它多写代码,它应该也能顺便学会画“关系图”(任务 A)。

3. 实验结果:令人失望的真相

研究人员测试了多种 AI 模型(包括开源的和闭源的),结果发现了一个**“尴尬”的事实**:

发现一:AI 不擅长“画关系图”

  • 比喻: 就像让一个只会背唐诗的人去解复杂的数学几何题。
  • 结果: 当让 AI 直接生成“调用图”或“数据流图”时,它们表现得很差。它们经常画错线,或者漏掉关键步骤。即使给它们看几个例子(提示词),它们也学不会真正的逻辑,只是学会了“格式”。
  • 结论: AI 并没有真正理解代码内部的逻辑联系,它们只是在模仿代码的“外表”。

发现二:特训没用(技能不通用)

  • 比喻: 就像你让一个学生专门练习“画地图”,结果发现他画地图练得再好,写文章的能力并没有提高
  • 结果: 研究人员先让 AI 疯狂练习“画关系图”(静态分析),然后再让它去写代码。结果发现,AI 写代码的能力并没有变强。它依然会犯同样的逻辑错误。
  • 结论: AI 并没有把“画关系图”的能力内化成写代码的“内功”。

发现三:写代码也没法“顺便”学会分析

  • 比喻: 就像你让一个学生每天写小说,结果发现他并没有因此学会解数学题
  • 结果: 反过来,让 AI 疯狂写代码(编程任务),然后让它去画“关系图”。结果它依然画得一塌糊涂。
  • 结论: AI 在写代码时,并没有像人类那样在脑子里构建逻辑模型。它只是根据概率在“猜”下一个字是什么。

4. 为什么会这样?(核心洞察)

这篇论文得出了一个有点“扎心”但很重要的结论:

AI 目前更像是一个“超级模仿者”,而不是一个“思考者”。

  • 人类程序员: 看到代码,脑子里会构建一个3D 模型(逻辑结构、数据流向),然后基于这个模型去写代码。
  • 代码大模型 (LLM): 看到代码,脑子里只有2D 的纹理(单词的排列组合、语法的形状)。它记住了“如果前面是 if,后面通常跟着 {",但它并不真正理解 if 背后的逻辑含义。

一个生动的例子:
如果让你写一个函数,要求它计算“第 100 个斐波那契数”。

  • 人类会想:“哦,这是递归,我要定义初始值,然后循环相加。”
  • AI可能会写出语法完美的代码,但逻辑却是错的(比如算错了数字),因为它只是在模仿它见过的类似代码的“样子”,而没有真正理解“计算”这个动作。

5. 这对我们意味着什么?

  1. 不要过度神话 AI: 虽然 AI 能写很多代码,但它并不具备人类那种深度的“逻辑推理”能力。它可能会写出看起来很像样,但逻辑完全错误的代码。
  2. 人类仍需把关: 因为 AI 不懂“静态分析”(即代码内部的深层逻辑),所以人类程序员必须仔细检查 AI 生成的代码,不能盲目信任。
  3. 未来的方向: 现在的 AI 架构可能还不够。未来的研究需要找到方法,让 AI 真正学会像人类一样去“理解”和“推理”代码的逻辑,而不仅仅是模仿代码的“皮囊”。

总结一句话:
这篇论文告诉我们,目前的代码 AI 更像是一个“背熟了所有菜谱的厨师”,它能模仿出菜的样子,但它并不真正理解“烹饪的原理”(逻辑推理)。 所以,别指望它能像人类大厨一样,在没看过菜谱的情况下,仅凭逻辑就发明出一道完美的新菜。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →