Image

Команда PVS-Studio просит присылать примеры ошибок, связанные с использованием вайб-кодинга

PVS-Studio, Вайб-кодинг
PVS-Studio, Вайб-кодинг

Есть две школы мысли.

Первая — это директора, HR-ы и «эффективные менеджеры», которые уже планируют сокращения IT-отделов. Они искренне верят, что ChatGPT скоро будет писать весь код, а программисты станут не нужны. Максимум оставят пару «промт-инженеров» и всё. Зачем платить разработчику, если можно просто попросить ИИ «сделать мне интернет-магазин»?

Вторая школа мысли сложна для понимания, потому что senior-программисты ржут так сильно, что не могут нормально объяснить.

(c) Мем с просторов интернета

Так или иначе, вайб-кодинг становится, — а где-то уже стал, — частью процесса разработки программного кода. Команда PVS-Studio видит в этом новые задачи для статических анализаторов по поиску ошибок в коде, возникающих при использовании ИИ-ассистентов и т.п. Первый шаг — собрать примеры реальных дефектов для изучения.

Отношение к вайб-кодингу и его вариациям неоднозначное. Я разделяю мнение, что использование сгенерированного кода, особенно без полного его понимания программистом, плохо скажется на надёжности и безопасности приложений. Так что работы у статических анализаторов только прибавляется 🙂

AI-сгенерированный код, возможно, будет содержать новые непривычные виды ошибок. Соответственно, чтобы их изучить и научиться выявлять, необходимо сначала собрать их коллекцию.

Есть ли в AI-сгенерированном коде ошибки?

Если попросить AI сгенерировать функцию сортировки, он сделает это без ошибки. Однако разработка проекта не сводится к написанию разрозненных функций, решающих конкретную простую задачу. Плотность ошибок возрастает с ростом проекта из-за сложности взаимодействия различных сущностей.

Мой коллега, экспериментировавший с AI, недавно прислал вот такое описание бага:

«Произошёл забавный случай, как нейронка придумала мне ошибку. Я попросил нейронку для моего класса Warning реализовать методы сравнения».

public class Warning { public string ErrorCode { get; set; } public string Message { get; set; } public uint Level { get; set; } public List<Position> Trace { get; set; } } public class Position { public int Line { get; set; } public string FilePath { get; set; } }

Фрагмент реализации от нейронки:

public bool Equals(Warning other) { if (other is null) return false; if (ReferenceEquals(this, other)) return true; return ErrorCode == other.ErrorCode && Message == other.Message && Level == other.Level && (Trace == other.Trace || (Trace != null && other.Trace != null && Trace.SequenceEqual(other.Trace))); } public override int GetHashCode() { unchecked { int hash = 17; hash = hash * 23 + (ErrorCode?.GetHashCode() ?? 0); hash = hash * 23 + (Message?.GetHashCode() ?? 0); hash = hash * 23 + Level.GetHashCode(); hash = hash * 23 + (Trace?.GetHashCode() ?? 0); return hash; } }

Факап в методе GetHashCode в строке:

hash = hash * 23 + (Trace?.GetHashCode() ?? 0);

Trace — список (ссылочный тип), поэтому хэш-код считается от ссылки на память, а она у всех объектов разная. Следовательно объекты никогда не будут равны, даже если у них одинаковые значения. В итоге ни один из стандартных алгоритмов (сортировки, фильтры, дубликаты и т.п.) не работал правильно.

В этой ошибке не просматривается что-то особенное, так бы мог написать и человек. Впрочем, это и не вызывает удивление. Возможно, будут замечены какие-то новые типы ошибок, но и классические должны встречаться.

Сейчас в PVS-Studio диагностики для такого случая нет — открыли TODO на создание. Это, конечно, даже ещё не начало пути, поэтому и просим присылать свои подобные случаи.

Зачем статические анализаторы? Пусть ошибки ищет другой AI

Я не думаю, что классические статические анализаторы будут полностью замены инструментами на основе AI. Наоборот, потребность в них может только возрасти, как к детерминированному подходу к контролю создаваемого ПО.

Идея отдать код, сгенерированный одной AI-системой, на проверку другой AI-системе выглядит привлекательной. Но есть два больших но.

Первое. Одно дело генерировать фрагменты кода. Совсем другое — отдавать код своего проекта куда-то во вне для его проверки. Очень многие производители крайне трепетно относятся к тому, чтобы их код не утёк. Отсюда возникают политики безопасности, разработка в закрытом контуре и т.д. Можно пойти по пути использования локально развёрнутых AI-систем, но это существенно увеличит стоимость разработки.

Второе. Не всех устраивает круговая безответственность.

Разработчик не виноват, что одна AI-система сгенерировала код с уязвимостью, а другая её не нашла. Вайб-кодинг допускает, что программист может не до конца понимать принципы работы созданного кода, тем более в разрезе его безопасности.

Создатели AI-систем не возьмут ответственность, что создают код без уязвимостей или умеют их выявлять. Мало ли как программист сформулировал задачу. Да и вообще, такая технология…

Никто не виноват, а уязвимости — вот они. Исправят, но что дальше? Какие действия предпринять, чтобы сделать разработку безопасной?

Общий ответ — строить процессы безопасной разработки, например по ГОСТ Р 56939-2024. Одной из важных составляющих РБПО как раз является статический анализ кода, причём классический или даже ГОСТ-овский — ГОСТ Р 71207-2024 🙂

Классические анализаторы тоже не гарантируют, что будут найдены все потенциальные уязвимости. Зато они работают детерминировано!

Если ошибка не найдена, или наоборот анализатор выдал ложное срабатывание, он делает это по понятной для человека логике. Диагностики описаны в документации. В крайнем случае можно попросить разработчиков анализатора рассказать, как именно устроен детектор. И если нужно — предложить доработки для него.

В случае AI всё приблизительно и без ответственности. Ещё один вопрос: на каких данных системы обучаются? Не скармливает ли кто-то туда тайно специально уязвимый код как образцовый?

Используются ли внутри PVS-Studio какие-то AI-алгоритмы для поиска ошибок?

Сейчас нет, хотя мы обдумываем эксперименты в этой области. Однако это будет просто ещё одна технология для обнаружения багов. Она будет носить эмпирический характер, о чём явно будет написано в документации к соответствующим детекторам.

Кстати, эмпирические детекторы и сейчас уже есть в PVS-Studio, хотя они построены не на AI, а просто на статистике.

Однако, ещё раз: переписывать что-то на AI мы не планируем. Наоборот, мы видим в классических алгоритмах ценность для мира вайб-кодинга 🙂 Просто появятся ещё дополнительные механизмы поиска дефектов.

Ещё есть смысл поэкспериментировать с фильтрацией ложных срабатываний. Часто человеку сразу понятно, что вот тут ложное срабатывание, хотя запрограммировать отсев таких случаев крайне сложно. Думаю, тут как раз хорошо подойдут AI-алгоритмы.

Присылайте примеры ошибок, возникших в результате использования вайб-кодинга

Приглашаем в комментариях делиться примерами багов, которые возникли в процессе вайб-кодинга, применения AI-ассистентов и т.д. Или присылайте их через форму обратной связи.

В том числе интересны баги, возникшие в процессе последующей ручной модификации такого кода. Случаи, когда код работал, но его легко сломать изменениями, тоже интересны. Статические анализаторы подсвечивают не только ошибки, но и код с запахом.

Всем заранее спасибо.

P.S. Предвидя комментарий

Я не первый раз коллекционирую ошибки, и бывает кто-то приходит с комментарием типа: «Фу, за мой счёт развивают коммерческий проект».

Ok, если дорожите этими багами, оставляйте их у себя 🙂 Считаю, что делиться взаимовыгодно, так как программисты со временем получат дополнительный механизм для проверки качества создаваемого кода.

Это похоже на обоюдную пользу от проверки нашей командой открытых проектов. Нам — материал для публикаций. Разработчикам проектов — возможность исправить пачку багов и начать использовать бесплатные лицензии PVS-Studio.

Впрочем, это не всё. Мне подсказали идею, и я ей воспользуюсь. Тем, кто пришлёт пример вайб-кодинг бага, который мне понравится, я в подарок буду отправлять бумажную книгу про неопределённое поведение.

P.P.S. Натуральная заметка без добавления AI 🙂

Данный текст полностью написан человеком, Андреем Карповым, без привлечения ИИ. Спасибо за внимание и заглядывайте в мой TG канал «Бестиарий программирования».

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov. PVS-Studio team invites you to share examples of errors related to vibe coding.

Источник: habr.com

✅ Найденные теги: Команда, новости
Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых