TGViewer
Бестиарий программирования Бестиарий программирования @programming_tales · 1.14K subscribers
Post #404 423
Команда PVS-Studio просит присылать примеры ошибок, связанные с использованием вайб-кодинга (часть 1 из 2)

Так или иначе, вайб-кодинг становится, — а где-то уже стал, — частью процесса разработки программного кода. Команда PVS-Studio видит в этом новые задачи для статических анализаторов по поиску ошибок в коде, возникающих при использовании ИИ-ассистентов и т.п. Первый шаг — собрать примеры реальных дефектов для изучения.
Есть две школы мысли.
Первая — это директора, HR-ы и "эффективные менеджеры", которые уже планируют сокращения IT-отделов. Они искренне верят, что ChatGPT скоро будет писать весь код, а программисты станут не нужны. Максимум оставят пару "промт-инженеров" и всё. Зачем платить разработчику, если можно просто попросить ИИ "сделать мне интернет-магазин"?
Вторая школа мысли сложна для понимания, потому что senior-программисты ржут так сильно, что не могут нормально объяснить.
(c) Мем с просторов интернета

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

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 на создание. Это, конечно, даже ещё не начало пути, поэтому и просим присылать свои подобные случаи.
  • ❤ 4
More from @programming_tales
  1. Oct 7, 2026Напоминаю, что мы подготовили подборку материалов и вебинаров по теме процессов разработки…
  2. Oct 2, 2026Запись вебинара: Go vet не поможет... Как сделать свой анализатор кода для Go?
  3. Oct 2, 2026В целях нетворкинга и просто так приглашаю коннектиться в TenChat — что-то типа LinkedIn.…
  4. Sep 29, 2026Сегодня коллега демонстрирует, как визуально проявляют себя баги в Java коде: Нашёл ошибки…
  5. Sep 29, 2026photo post
  6. Sep 28, 2026На днях выступал с докладом на форуме "Безопасность транспортных средств", организованном…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →