Качество кода снизилось из-за нейросетей

Аватарка пользователя Сергей Баранов

Исследование показало, что помощники, такие как Copilot, пишут код, который по качеству похож на «хаотичную работу неопытного аутсорсера».

Исследование сервиса GitClear показало, что за последнее время общее качество кода в проектах стало снижаться. Основная причина этого — распространение нейросетей, которые помогают писать код. По прогнозам, тенденция сохранится.

Что случилось?

Компания GitClear собрала около миллиарда строк кода, появившегося с 2020 по 2024 год. Информацию брали от клиентов (NextGen Health, Verizon) и из репозиториев с открытым исходным кодом (Facebook React, Google Chrome). Из миллиарда отобрали 153 миллиона строк, в которых провели значимые изменения:

  • добавление новых, уникальных строк;
  • удаление строк (важно, чтобы их не возвращали после);
  • перемещение строк в новый файл или в новую функцию в том же файле;
  • обновление строк более чем на три слова;
  • замена одних и тех же строк кода в разных местах;
  • копирование и вставка кода в рамках одного или более коммитов.

Также команда изучала правки в уже измененном коде — под таким подразумевали тот, что серьезно переписали в течение двух недель.

Результаты показали, что за последние годы существенно вырос показатель «оттока кода» (Code Churn). Так называют код, который удалили или серьезно изменили в течение двух недель после добавления. Это изменения без пользы для проекта — которые отражают качество кода в целом указывают на нестабильность и количество ошибок.

До 2023 года такого кода было всего 3–4% (со всплеском до 9% в 2022 году, когда вышел Copilot). К концу 2023 показатель вырос до 5,5%, а в 2024 по прогнозам составит уже 7% — это вдвое больше, чем в 2021 году, до выхода нейросетевых помощников.

Данные на 2024 года — это прогноз, который составили GitClear с помощью языковой модели gpt-4-1106-preview. Ее создала OpenAI с помощью квадратичной регрессии и Python.

Аналитики также проверили, сколько времени живет код без изменений. Результаты показывают, что за последние 4 года доля кода, который изменили в течение двух недель выросла, на 10%. При этом доля кода, который меняют спустя месяц, упала (это связывают с длиной спринта).

По мнению исследователей, это показывает, что до появления Copilot и похожих помощников разработчики чаще искали в своем коде фрагменты, которые можно доработать. Теперь же доминирует подход «написал и забыл после окончания спринта».

О чем это говорит?

Качество кода упало в 2023 году. Это связано с широким распространением LMS в целом и помощников на базе искусственного интеллекта в частности. Ведь они заточены на то, чтобы писать, а не поддерживать код. А джуны, в отличие от опытных разработчиков обращают на это меньше внимания.

Потребуется альтернативный инструмент, который будет проверять код и предлагать улучшения. GitClear самим было бы интересно поработать со специалистами, которые занимаются (или готовы заниматься) подобным.

Опрос GitHub, показал, что и сами разработчики чувствуют, что качество кода снизилось. Так, в ответе на вопрос «По чему вас следует оценивать в отсутствие искусственного интеллекта» «качество кода» опустилось на второе место.

Нейронные сети
Искусственный интеллект
286