LLM 现代化改造竟让代码更糟
When Modernization Breaks Working Code: A Study of LLMs on Legacy PHP
把旧代码扔给 LLM 让它“现代化”是个诱人的捷径,但结果往往适得其反。这项针对 Legacy PHP 的研究发现,在将 100 个 WordPress 4.0 文件迁移到 PHP 8.3 的任务中,表现最好的 LLM 反而让原本能运行的代码数量从 83 个减少到 59 个。相比之下,规则工具 Rector 破坏的代码更少。研究揭示,绝大多数破坏是多余的:在无需修改的文件中,LLM 仍会导致 36% 至 60% 的故障,而 Rector 仅为 8%。许多错误源于 LLM 添加了 PHP 自身拒绝的类型声明,导致文件无法加载。这表明,评估 LLM 代码现代化时,必须引入“不修改”作为基准线,并分别报告现代化程度与行为保持率。
在无需修改的兼容文件中,LLM 仍会导致 36% 至 60% 的破坏,而 Rector 仅为 8%。