← 最新论文
🤖 AI

LLM Code Smells: A Taxonomy and Detection Approach

本文提出了一种包含九种大语言模型代码坏味的细化分类体系,并介绍了 SpecDetect4LLM 这一静态分析工具,该工具在分析的 692 个开源项目中,于 73.5% 的项目中展现出检测这些集成问题的高查准率和高查全率。

原作者: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

发布于 2026-05-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

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

想象一下,你正在建造一座房子,但你不是聘请人类建筑师,而是聘请了一位超级聪明、速度极快但略显不可预测的机器人来帮你设计房间并挑选家具。这个机器人就是大语言模型(LLM)。它非常神奇,但如果你不给它清晰的指令,或者不检查它的工作,它可能会在应该装窗户的地方装上一扇门,或者使用遇雨就会散架的材料。

本文探讨的是当人类开发者尝试将这些机器人集成到其软件中时,所出现的“坏习惯”(或称“代码异味”)。研究人员发现,正如杂乱的厨房会导致食物烧焦一样,与人工智能交互时的杂乱代码会导致软件崩溃、成本过高或给出错误答案。

以下是他们研究发现的简要概述,采用简单的类比进行说明:

1. 问题:“机器人的坏习惯”

研究人员识别出开发者在与这些 AI 机器人交互时存在的9 种具体坏习惯。他们将它们分为三类,就像将工具分类放入工具箱一样:

  • “结构”习惯(你提问的方式):

    • 类比: 想象你问厨师:“给我做晚饭”,却不告诉他们你想要素食、辣味,或者是否有坚果过敏。
    • 异味: 缺少系统消息(No System Message)。 开发者经常忘记给 AI 一个“职位描述”(即系统消息),告诉它它应该扮演什么角色(例如:“你是一位乐于助人的数学辅导老师”)。如果没有这一点,机器人就会表现得像一个通用的闲聊机器人,而不是专家。
    • 异味: 匿名调用(Anonymous Calls)。 想象你打电话给餐厅却不报上你的名字。如果食物不好,餐厅就不知道该回拨给谁。开发者经常忘记在 AI 请求中附加“用户 ID",导致日后无法追踪是谁引发了问题。
  • “数据”习惯(你发送和接收的内容):

    • 类比: 让机器人帮你整理邮件,但你却寄给它一个巨大的、未拆封的垃圾邮件箱,而不是只寄信件。
    • 异味: 无结构化输出(No Structured Output)。 你要求 AI 以特定格式(如 JSON 列表)提供成分列表,但没有强制它遵循该格式。它可能会给你一段文字。你的软件随后尝试将这段文字作为列表读取,从而导致崩溃。
    • 异味: 原始视觉载荷(Raw Vision Payload)。 如果你要求 AI 查看你代码中的错误照片,发送你显示器的整个 4K 截图是浪费的。这就像为了询问一本书而邮寄整个图书馆。你应该先将图像裁剪为仅包含错误部分。
  • “协议”习惯(游戏规则):

    • 类比: 开车时不设定限速,也不检查你驾驶的是哪种车型,就假设它永远是一样的。
    • 异味: 未固定模型版本(No Model Version Pinning)。 你告诉机器人:“使用'GPT-4'模型。”但公司明天可能会将"GPT-4"更新为一个完全不同的机器人。你的代码会因此崩溃,因为机器人改变了它的“性格”。你需要将其固定到特定版本(例如"2024 年 11 月的 GPT-4")。
    • 异味: 无上限的最大指标(Unbounded Max Metrics)。 你让机器人写一个故事,但没有告诉它在 500 字后停止。它可能会一直写下去,耗尽你所有的金钱和时间。
    • 异味: 未设置温度(Temperature Not Set)。 这控制机器人的“创造力”或“随机性”。如果你不设置它,机器人会使用默认设置,而该设置明天可能会改变,导致你的软件在不同日子表现不同。

2. 解决方案:“嗅探犬”(SpecDetect4LLM)

研究人员开发了一种名为 SpecDetect4LLM 的工具。你可以把它想象成一只在你的代码中穿行的嗅探犬

  • 它不运行代码;它只是查看指令(即“静态分析”)。
  • 它四处嗅探,看看你是否犯了上述 9 种坏习惯中的任何一种。
  • 如果它发现坏习惯,它就会吠叫(发出警报),以便开发者在软件上线前进行修复。

3. 结果:这只狗有多好?

研究人员在 692 个不同的软件项目(超过 171,000 个代码文件)上测试了这只嗅探犬。以下是他们的发现:

  • 这些坏习惯发生的频率有多高?

    • 73.5% 的项目至少存在一种这些坏习惯。这就像走进一座房子,发现四分之三的房子都有漏水的水龙头。这非常普遍。
    • 最常见的坏习惯是未固定模型版本(使用通用名称而非特定名称)。
  • 这只嗅探犬在发现它们方面有多好?

    • 精确度(准确性): 当狗吠叫时,它有 91.3% 的时间是正确的。它很少误报。
    • 召回率(完整性): 这只狗能发现大约 71.8% 的实际坏习惯。它会漏掉一些,但能抓住大多数。

4. 为什么这很重要?

该论文认为,虽然这些坏习惯并不总是立即导致软件崩溃,但它们就像汽车上的锈迹

  • 它们使汽车日后更难修复(可维护性)。
  • 它们使汽车运行更慢或消耗更多汽油(性能)。
  • 它们使汽车在下雨天表现不可预测(可靠性)。
  • 它们使汽车在路况变化时变得不安全(鲁棒性)。

总结

研究人员创建了一份“菜单”,列出了开发者在使用 AI 时常见的 9 种错误,开发了一种工具来自动发现这些错误,并证明了这些错误在软件世界中无处不在。他们的工具非常擅长发现这些问题,帮助开发者构建在使用 AI 时更安全、更经济、更可靠的软件。

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

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

试用 Digest →