Зачем вообще тестировать ИИ на поиск ошибок?
Потому что все пишут про генерацию кода. Все хвалят, как нейросети создают функции с нуля. Но реальная работа разработчика — это на 60% отладка чужого (или своего вчерашнего) кода. И если ИИ-помощник не видит очевидный баг в трех строчках, зачем он вообще нужен?
Важный момент: я тестировал не на синтетических задачах из учебников. Я брал реальный код из open-source проектов, где ошибки уже были исправлены в коммитах. Такой подход дает честную картину.
Методика: как я ловил нейросети на горячем
Я подготовил 15 задач разной сложности:
- 5 простых — ошибки в индексах, типах данных, простых условиях
- 5 средних — race conditions, утечки памяти, неправильная работа с API
- 5 сложных — логические ошибки в алгоритмах, проблемы с concurrent access
Каждую задачу я подавал всем трем моделям в одинаковых условиях:
- Только код с ошибкой, без контекста
- Код + описание того, что должно происходить
- Код + стектрейс ошибки (если применимо)
Результаты: кто кого?
| Модель | Простые ошибки | Средние ошибки | Сложные ошибки | Ложные срабатывания |
|---|---|---|---|---|
| ChatGPT 5.2 Pro | 5/5 | 3/5 | 1/5 | 2 |
| Claude Opus 4.5 | 5/5 | 4/5 | 2/5 | 1 |
| Gemini 3 Pro | 4/5 | 2/5 | 0/5 | 4 |
1ChatGPT 5.2 Pro: быстрый, но поверхностный
GPT-5.2 находит очевидные ошибки мгновенно. Off-by-one ошибка? Видит с первого взгляда. Проблема с типом данных? Объясняет за секунду.
Но вот что бесит: модель часто "додумывает" контекст, которого нет. Видит функцию, которая парсит JSON, и сразу начинает рассказывать про обработку ошибок, хотя в конкретном коде проблема была в другом месте.
Пример: в тесте с race condition в Go ChatGPT правильно указал на отсутствие мьютекса, но предложил использовать sync.Map там, где это только усложнило бы код. Типичная ситуация — знает теорию, но не чувствует практику.
2Claude Opus 4.5: методичный аналитик
Claude работает иначе. Он не выдает ответ за 2 секунды. Он думает. Видимо, использует тот самый "thinking mode", о котором все говорят.
В одном из тестов был код на Python с subtle memory leak через циклические ссылки. ChatGPT пропустил. Gemini вообще не понял, о чем речь. Claude потратил минуту, но выдал развернутый анализ: где создается ссылка, почему garbage collector не справляется, и три варианта фикса.
Минус? Иногда слишком методичен. Может потратить 500 токенов на объяснение того, что и так очевидно. Но если нужен не просто "здесь ошибка", а "почему это ошибка и как не допустить в будущем" — Claude вне конкуренции.
3Gemini 3 Pro: странные провалы
Gemini 3 Pro — самая непредсказуемая модель в тесте. Иногда выдает блестящие инсайты. Иногда пропускает ошибки, которые видны junior-разработчику.
Самое странное: в тесте с JavaScript-функцией, которая неправильно работала с асинхронными вызовами, Gemini начал объяснять, как работает event loop (правильно!), но не заметил, что в коде банально забыли await перед Promise.
Четыре ложных срабатывания — это много. Gemini часто "видит" проблемы там, где их нет. Особенно в коде на Go и Rust — видимо, потому что эти языки строже с типами и ownership, и модель перестраховывается.
Конкретные примеры из тестов
Тест #3: Python, работа с файлами
Был код, который открывал файл, читал построчно, но не закрывал его явно. Использовался контекстный менеджер, но с ошибкой.
- ChatGPT: "Заметил проблему сразу, предложил использовать with open()"
- Claude: "Указал на проблему, плюс добавил рекомендацию по обработке исключений внутри контекстного менеджера"
- Gemini: "Сказал, что код 'выглядит нормально', но можно добавить logging"
Тест #8: Go, конкурентность
Классическая ошибка: запуск горутин в цикле без передачи переменной как параметра.
И ChatGPT, и Claude справились. Claude дал более подробное объяснение про closure и capture переменных. Gemini снова пропустил, хотя это базовая вещь в Go.
Что это значит для разработчиков?
Если вы ищете ИИ-помощника именно для отладки:
- Для быстрой проверки простого кода — ChatGPT 5.2 Pro. Быстро, дешево (относительно), эффективно для routine checks.
- Для сложной отладки, когда не понятна сама природа бага — Claude Opus 4.5. Дороже, медленнее, но глубже.
- Gemini 3 Pro — пока не для production-отладки. Слишком много false positives, пропускает важное.
Интересный факт: когда я давал моделям не код с ошибкой, а описание проблемы и просил сгенерировать потенциально проблемный код, результаты менялись. Claude генерировал код с более изощренными багами. ChatGPT — с типовыми. Gemini — либо слишком простые, либо нерелевантные ошибки.
А что насчет нишевых инструментов?
Пока гиганты соревнуются в генерации кода, появляются специализированные инструменты для отладки. В статье про 4 нишевых ИИ-инструмента я рассказывал о решениях, которые фокусируются именно на анализе кода, а не на его генерации.
Например, есть инструменты, которые умеют анализировать performance anti-patterns или security vulnerabilities в конкретных фреймворках. Они не такие универсальные, как ChatGPT, но в своей нише работают точнее.
Ошибки, которые делают все
В процессе тестирования я заметил паттерны:
- Все три модели плохо справляются с ошибками в distributed systems коде. Видимо, не хватает контекста.
- Все три иногда "забывают" про edge cases, даже когда они очевидны человеку.
- Ни одна модель не справилась с ошибкой в алгоритме consensus (Raft implementation). Слишком специфично.
Если вы только начинаете работать с ИИ-помощниками, посмотрите 10 ошибок новичков — там много про то, как правильно формулировать запросы для отладки.
Практический совет: как тестировать ИИ на своих задачах
Не верьте обзорам (включая этот). Сделайте свой тест:
- Возьмите 5-10 реальных багов из вашего проекта (уже исправленных)
- Дайте код трем моделям без указания, что там ошибка
- Замерьте не только "нашел/не нашел", но и время ответа, качество объяснения
- Проверьте, сколько false positives выдает каждая модель
Для формулировки тестовых заданий можно использовать ChatGPT для формулировки ТЗ — ирония в том, что одна модель помогает тестировать других.
Что будет через год?
Судя по тому, как развиваются модели, через 12 месяцев мы получим:
- Специализированные "debugging models", обученные на миллионах коммитов с fix/patch
- Интеграцию статического анализа с LLM — сначала SonarQube найдет проблему, потом ИИ объяснит, как фиксить
- Модели, которые умеют "симулировать" выполнение кода мысленно, как это делает опытный разработчик
Пока же мой стек для работы с кодом выглядит так: Claude 4.5 + Cursor + GPT 5.2. Каждый инструмент для своих задач.
И последнее: не надейтесь, что ИИ полностью заменит ваши навыки отладки. Он может найти симптом. Причину все равно ищете вы. Пока что.