← 最新论文
💻 computer science

Comment Traps: How Defective Commented-out Code Augment Defects in AI-Assisted Code Generation

该研究揭示了 AI 编程助手(如 GitHub Copilot 和 Cursor)极易受上下文中有缺陷的注释代码影响,不仅会主动推理并补全缺陷模式,且即便在明确指令下也难以有效规避,从而显著增加了生成代码的缺陷率。

原作者: Yuan Huang, Yukang Zhou, Xiangping Chen, Zibin Zheng

发布于 2026-02-19
📖 1 分钟阅读☕ 轻松阅读

原作者: Yuan Huang, Yukang Zhou, Xiangping Chen, Zibin Zheng

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

这篇论文讲了一个关于"AI 编程助手”(比如 GitHub Copilot 或 Cursor)的一个有趣但有点危险的发现。我们可以把它想象成**“被遗忘的草稿纸陷阱”**。

🎭 核心故事:AI 也会“照猫画虎”吗?

想象一下,你正在和一个超级聪明的AI 学徒一起写代码。你给它看一段代码,让它接着往下写。

通常,我们会把暂时不用的代码**“注释掉”**(就像在草稿纸上把不想要的句子划掉,或者用括号括起来,告诉编译器“这段别运行”)。在人类程序员眼里,这些被划掉的代码就是“废稿”,完全不用管。

但是,这篇论文发现了一个大麻烦:
当 AI 看到这些被划掉的“废稿”时,它并没有把它们当成垃圾扔掉。相反,它觉得:“哦,原来这里以前是这么写的,虽然有点问题,但可能是个思路!”于是,AI 会主动模仿这些有问题的“废稿”,甚至把里面的错误逻辑也一起写进新的代码里。

这就好比:

你给 AI 看一张画了一半的草图,上面画了一只三条腿的狗(这是错误的),然后你把它划掉,说“别画这个”。
结果 AI 看着这张图,心想:“嗯,虽然画错了,但可能是个新风格?”于是它在新画里,认真地画了一只三条腿的狗,而且画得还特别像。

🔍 研究人员做了什么实验?

研究人员(来自中山大学)做了个“钓鱼”实验:

  1. 准备诱饵:他们从真实的开源项目中找出了很多带有安全漏洞的代码(比如容易让黑客入侵的代码)。
  2. 制造陷阱:把这些有漏洞的代码“注释掉”(变成废稿),然后放在 AI 要写代码的位置附近。
  3. 观察反应:让 GitHub Copilot 和 Cursor 这两个著名的 AI 编程助手,看着这些“废稿”继续写代码。

📊 发现了什么惊人的结果?

  1. 缺陷率飙升
    当 AI 看到这些有问题的“废稿”时,它生成的新代码中,错误率最高增加了 58.17%。也就是说,本来可能只有 10 个错误,现在变成了 16 个。

  2. AI 不是简单的“复制粘贴”
    最可怕的不是 AI 直接照抄错误。研究发现,AI 会**“举一反三”**。

    • 如果你把“废稿”截断一半(只留一半的错误代码),AI 依然能猜出另一半是什么,并把它补全,然后写出一个完整的错误代码。
    • 这就像你只给 AI 看“三条腿的狗”的前半句,它就能自动脑补出后半句,并画出一只完整的“三条腿的狗”。
  3. 警告标签没用
    研究人员在“废稿”旁边加了标签,写着 <危险!> 或者 <别用这个>
    结果呢?AI 几乎没听进去。错误率几乎没有下降。这说明 AI 太关注代码本身的逻辑了,完全忽略了人类的文字警告。

  4. 位置很重要
    如果把有问题的“废稿”放在 AI 要写代码的后面(比如光标后面),AI 更容易中招。这就像你回头看了一眼地上的陷阱,结果脚下一滑,直接掉进去了。

  5. 环境越乱,AI 越懵
    如果代码周围空行很多,或者格式很乱(稀疏的上下文),AI 反而更容易被这些“废稿”带偏。就像在嘈杂的房间里,人更容易听信谣言一样。

💡 这对我们意味着什么?

  • 不要以为“注释掉”就安全了:以前我们觉得把有问题的代码注释掉就万事大吉了。但现在看来,如果这些代码里有漏洞,它们可能会像“幽灵”一样,通过 AI 复活,变成新的安全漏洞。
  • AI 需要更聪明的“过滤器”:现在的 AI 太容易受“上下文”影响了。我们需要教 AI 学会区分“正在运行的代码”和“被废弃的草稿”,并且要更聪明地忽略那些有问题的旧思路。
  • 人类要更警惕:在使用 AI 编程时,不能盲目信任它。特别是当你的代码库里有很多旧的、被注释掉的代码时,要小心 AI 会不会把这些“陈年旧账”重新翻出来。

🏁 总结

这篇论文就像给 AI 编程世界敲了一记警钟:AI 很聪明,但它也会“学坏”。 如果你把有问题的旧代码留在文件里(哪怕是用注释包起来),AI 可能会把它们当成“灵感”,把错误延续下去。

一句话总结:

别把有问题的旧代码随便扔在文件里当“注释”,AI 可能会把它们当成“新菜谱”,把错误的味道也一起炒进你的新菜里。

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

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

试用 Digest →