AI Pulse
📡 X 信号

AI生成能过测试的代码 也可能快速烂掉整个代码库

AI生成能过测试的代码 也可能快速烂掉整个代码库

很多使用Vibe Coding的开发者存在一个误区,认为只要AI生成的代码能通过测试,任务就完成了。但现实情况是,代码形式完全正确和代码库快速腐化,可以同时发生。

Sebastian发布在Earendil的文章清晰点明了这个痛点。大语言模型能生成通过测试的代码早就不是新技术,真正致命的问题是AI会在代码中大量塞入「冗余糟粕(Slop)」。

为了实现简单需求,AI常会凭空造出多层抽象、四处复制已有逻辑,或是在一个老函数里硬塞十几个分支。对于每月新增上百万行代码的项目,人工根本无法完成全部审核,就算让智能代理(Agent)帮你审核整理这些劣质代码,智能代理自身也处理不过来。

该文章基于SlopCodeBench提出了三个层层递进的度量维度,可用来量化代码的潦草程度:

第一个维度是代码行数(LOC)增量,这是最简单也有效的预警方式。一个功能真正需要的逻辑量通常是固定的,如果只是改动一个按钮或调整参数,智能代理却一次性生成几百行代码,通常就说明代码存在问题。代码行数统计虽然粗糙,无法直接代表代码质量,但能直接测出冗余糟粕滋生的整体范围。

第二个维度是冗余密度(Verbosity),用来衡量代码绕了多少不必要的弯路。计算方式为(AST-Grep标记行∪克隆重复行)/总代码行数:先通过AST-Grep按代码语法树结构识别死代码、无意义包装和过度复杂的写法,加上重复的克隆行,去重后计算其占总代码行数的比例。比例越高,说明代码库里重复造轮子、走弯路的代码越多。

第三个维度是代码腐蚀度(Erosion),用来判断复杂度是不是都集中在问题函数中。很多时候测试全通过,只是因为智能代理不敢改动系统架构,只能把所有逻辑都硬塞到同一个核心函数里。

作者用圈复杂度(分支路径数)对函数长度做加权,挑出圈复杂度大于10的高危函数,计算这些函数的维护负担占全部函数的比例。这个比例越高,说明系统复杂度越失衡,整个代码库正在从内部被少数巨型函数腐蚀。

评测中的真实数据对比很能说明问题:成熟开源项目的平均冗余密度为0.15±0.06,智能代理生成代码的平均冗余密度达到0.33±0.10;开源项目的平均代码腐蚀度为0.31±0.17,智能代理生成代码的平均腐蚀度高达0.68±0.20。

两项指标几乎都翻了一倍。作者自己的一些Vibe Coding项目里,冗余密度甚至达到0.4,腐蚀度达到0.75。

查看 X 原帖

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新