AI и code quality: проблема дублирования и качества
Данные GitClear и Ox Security показывают восьмикратный рост дублирования кода, падение рефакторинга и системное игнорирование архитектурных паттернов
AI-инструменты генерируют код быстрее человека. Вопрос — какого качества. GitClear проанализировала 211 миллионов строк кода за 2020–2024 годы и обнаружила тренд, который должен насторожить любого техлида: количество дублированных блоков кода за 2024 год выросло в восемь раз. Ox Security изучила 300+ open-source репозиториев и нашла, что AI-код вводит на 322% больше путей эскалации привилегий и на 153% больше архитектурных дефектов по сравнению с кодом, написанным людьми.
Код функциональный. Поддерживаемость — отдельная история.
Данные GitClear: дублирование растёт, рефакторинг падает
GitClear ведёт базу данных структурированных изменений кода с 2020 года. Отчёт за 2025 год основан на анализе 211 миллионов строк и фиксирует несколько параллельных трендов.
Рост дублирования. Доля дублированных строк в изменениях выросла с 8.3% в 2021 году до 12.3% в 2024. Блоки из 5+ одинаковых строк стали появляться в 8 раз чаще. AI копирует паттерн, который видит в кодовой базе, вместо того чтобы вынести общую логику в переиспользуемый компонент.
Copy-paste вместо рефакторинга. В 2024 году количество скопированных строк впервые превысило количество перемещённых (moved). Разработчик просит написать обработчик ошибок — AI копирует аналогичный обработчик из соседнего файла, общей функции не появляется. Рефакторинг как практика упал с 25% изменённых строк в 2021 году до менее 10% в 2024.
Рост code churn. Доля нового кода, который переписывают в течение двух недель после коммита, выросла с 3.1% в 2020 до 5.7% в 2024. Код, написанный AI и принятый без правок, чаще оказывается неправильным и требует исправлений.
Три тренда складываются в одну картину: AI генерирует больше кода, в этом коде больше дублирования, рефакторинга меньше, переделок больше.
Отчёт Ox Security: «армия джуниоров»
В октябре 2025 года Ox Security опубликовала отчёт «Army of Juniors: The AI Code Security Crisis». Команда исследовала 300+ open-source репозиториев и выявила 10 антипаттернов, которые AI-генерированный код воспроизводит систематически.
Avoidance of Refactors (80–90% AI-кода). Новый код добавляется поверх старого, а не вместо. Мейнтейнер попросит живого разработчика вынести дублирующуюся логику в отдельный модуль. AI этого без явной просьбы не сделает.
Bugs Deja-Vu (70–80% AI-кода). Баги, которые уже есть в кодовой базе, повторяются. Модель обучена на коде проекта и воспроизводит его паттерны, ошибочные в том числе.
Fake Test Coverage (40–50% AI-кода). Генерируются тесты, которые формально увеличивают coverage, но проверяют тривиальные сценарии и пропускают edge cases. Метрика растёт, защита от багов — нет.
Return of Monoliths (40–50% AI-кода). Логика складывается в один файл или одну функцию, без распределения ответственности по модулям. Принять такой код без ревью — значит собирать монолитную архитектуру по кусочкам.
Главный вывод Ox Security: AI-код «функционален, но систематически лишён архитектурного суждения». Поставленную задачу AI решает. Вопросов вроде «нет ли уже похожей функции», «не нарушает ли это принцип единственной ответственности», «как это повлияет на кодовую базу через год» он не задаёт.
Три вектора AI-технического долга
Авторы из CERFACS выделяют три источника технического долга от AI-инструментов.
Model versioning chaos. Команда начинает с Copilot на GPT-4, через полгода переключается на Cursor с Claude, через квартал добавляет Claude Code. Каждый инструмент и каждая модель пишет в своём стиле. Кодовая база превращается в мозаику из разных «почерков», и новичок тратит время, разбираясь, почему один модуль выглядит так, а соседний иначе.
Code generation bloat. AI пишет verbose-код. Там, где опытный разработчик уложится в три строки, выйдет пятнадцать — с комментариями и обработкой edge cases, которые в данном контексте невозможны. Объём кодовой базы растёт, когнитивная нагрузка на читающих этот код тоже.
Organization fragmentation. В крупных компаниях разные команды выбирают разные AI-инструменты и пользуются ими по-разному. Одна команда пишет промпты для Copilot, вторая настроила Cursor rules, третья запускает Claude Code с кастомным CLAUDE.md. Стандарты кода расходятся, общий code review усложняется.
Парадокс Harness: больше времени на дебаг
Отчёт State of Software Delivery 2025 от Harness добавил ещё один штрих. Большинство опрошенных разработчиков сказали, что тратят на дебаг AI-генерированного кода больше времени, чем тратили на дебаг своего кода до внедрения AI. Та же картина с security-уязвимостями: на устранение проблем безопасности в AI-коде уходит больше времени.
Это не значит, что AI-код хуже построчно. Ox Security подчёркивает: AI-код «не более уязвим в расчёте на строку, чем код человека». Проблема — в объёме. Кода в единицу времени получается больше, абсолютное число проблем растёт, даже если плотность дефектов держится на прежнем уровне.
Рекомендации для команд
Настройте линтеры и static analysis под AI-код. Если команда пользуется AI, правила дублирования (DRY violations) в линтере должны быть строже, а не мягче. Инструменты вроде SonarQube, Semgrep или eslint с кастомными правилами ловят паттерн «скопировал вместо вынес в функцию».
Ревьюйте AI-код как код джуниора. Ox Security называет AI-код «армией джуниоров». Code review здесь становится критичным: ревьюер проверяет не только корректность, но и архитектуру. Создаёт ли PR новую абстракцию там, где нужна существующая? Растёт ли дублирование?
Отслеживайте code churn. Растущий процент кода, который переписывают в течение двух недель после коммита, — это сигнал. GitClear предоставляет инструменты для трекинга, аналогичную метрику можно собрать и на данных из git.
Давайте AI контекст об архитектуре. Cursor rules, CLAUDE.md, .github/copilot-instructions.md — все три инструмента поддерживают кастомные инструкции. Опишите архитектурные принципы, укажите на существующие абстракции, запретите дублирование. С инструкциями AI следует им заметно лучше, чем без.
Инвестируйте в тестовую инфраструктуру. Тесты с фейковым coverage AI генерирует охотно. Защита — mutation testing (Stryker, pitest) и ревью тестов с тем же вниманием, что и ревью продуктового кода.
Код, который AI пишет сегодня, команде поддерживать годами. Решения о качестве принимаются до того, как технический долг станет неуправляемым.