ИИ-помощники для программистов создали новый тип багов. Что это за баги?

Новости

ИИ-помощники, такие как GitHub Copilot, создают новый тип багов: скрытые ошибки в импортах и коде из-за неверных предположений и автоматизации

76 открытий558 показов
ИИ-помощники для программистов создали новый тип багов. Что это за баги?

В последние годы ИИ-помощники, такие как GitHub Copilot, стали популярными инструментами для ускорения разработки кода.

Однако, как показывает опыт разработчика Klaas van Schelven, использование таких инструментов может привести к появлению новых, труднообнаружимых ошибок в коде.

Случай с GitHub Copilot

В своём блоге разработчик описывает, как при работе над проектом с использованием Django он столкнулся с неожиданными сбоями в тестах.

После продолжительного поиска причины выяснилось, что Copilot автоматически сгенерировал следующую строку импорта:

			from django.test import TestCase as TransactionTestCase
		

На первый взгляд, этот импорт может показаться безобидным. Однако в Django классы TestCase и TransactionTestCase имеют разные поведения в отношении управления транзакциями:

  • TestCase: оборачивает каждый тест в транзакцию и откатывает её после завершения, обеспечивая изоляцию тестов.
  • TransactionTestCase: не управляет транзакциями автоматически, что полезно для тестов, зависящих от явного управления транзакциями.

Таким образом, импорт TestCase под именем TransactionTestCase привёл к тому, что тесты выполнялись с неверной семантикой транзакций, вызывая неожиданные сбои.

Почему такие ошибки трудно обнаружить?

Такие ошибки сложно выявить по нескольким причинам:

  1. Автоматизация: Разработчики могут не замечать автоматически сгенерированные строки кода, особенно при быстром темпе работы.
  2. Переименование: Использование ключевого слова as для переименования может скрыть истинную природу импортируемого объекта, вводя в заблуждение при чтении кода.
  3. Доверие к ИИ: Разработчики могут чрезмерно полагаться на ИИ-помощников, не перепроверяя сгенерированный код, что увеличивает риск внедрения подобных ошибок.

Рекомендации для предотвращения подобных ошибок

Чтобы минимизировать риски, связанные с использованием ИИ-помощников, рекомендуется:

  • Внимательно проверять сгенерированный код: особенно строки импорта и переименования.
  • Понимать контекст: осознавать, какие классы и функции используются, и как они взаимодействуют в проекте.
  • Ограничивать автоматизацию: использовать ИИ-помощников как вспомогательный инструмент, а не как основной источник кода.
Следите за новыми постами
Следите за новыми постами по любимым темам
76 открытий558 показов