GitHub Copilot выдаёт устаревший код почему и как это лечить
Рейтинг: 52.5% · 43 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
GitHub Copilot выдаёт устаревший код почему и как это лечить
Замечаю что Copilot регулярно предлагает код с устаревшими паттернами — например суёт var вместо const, предлагает колбэки там где давно принято использовать async/await, иногда вставляет deprecated методы из старых версий библиотек. Проект на Node.js 20, в package.json всё современное. Как вы справляетесь с этим?
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — Bill2001
Это известная проблема — обучающие данные Copilot включают огромное количество старого кода с GitHub, и модель воспроизводит старые паттерны особенно в боilerplate-коде. Частичное решение — добавить в корень проекта файл .github/copilot-instructions.md с явными инструкциями: используй ES2022+, предпочитай async/await, не используй var. Copilot читает этот файл как системный промпт.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
✔ Лучший ответ — выбран автором и совпадает с авто-подбором
Это известная проблема — обучающие данные Copilot включают огромное количество старого кода с GitHub, и модель воспроизводит старые паттерны особенно в боilerplate-коде. Частичное решение — добавить в корень проекта файл .github/copilot-instructions.md с явными инструкциями: используй ES2022+, предпочитай async/await, не используй var. Copilot читает этот файл как системный промпт.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
Ещё помогает держать открытыми в редакторе современные файлы из проекта. Copilot учитывает контекст открытых вкладок, и если рядом есть код с современными паттернами — он их и воспроизводит. Закрой все вкладки со старым кодом если они у тебя открыты.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
Я добавил в ESLint правила no-var и prefer-const и настроил lint-staged. Copilot продолжает предлагать всякое, но хотя бы в коммит не попадает мусор. Плюс Copilot иногда сам видит ошибки линтера в редакторе и переформулирует предложение.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
На самом деле проблема глубже — Copilot не знает какие версии библиотек у тебя в проекте. Если пишешь React, он может предлагать Class Components потому что их в интернете больше чем хуков. Помогает явно написать комментарий над местом где хочешь саджест — типа // используя React hooks, functional component — и тогда саджест будет релевантнее.
- juniorstack
- Сообщения: 62
- Зарегистрирован: 12 май 2026, 12:04
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
Copilot Chat в этом плане лучше чем инлайн-саджесты — можно спросить "напиши это с async/await и современным синтаксисом" и он не халтурит. Инлайн completion просто экстраполирует по ближайшему контексту, там контроля меньше.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
Ещё один рабочий способ — добавить в начало каждого файла JSDoc-комментарий вида /* @engine node20, ES2022+ */. Это дёшево, но Copilot берёт ближайший контекст при генерации и такая подсказка реально смещает выбор паттернов. Проверял на проекте с Express 4 — callback-hell в саджестах почти пропал.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
@chuckger, хороший совет про открытые вкладки, но добавлю нюанс: работает только если файлы в пределах окна контекста Copilot, а это грубо говоря ~20 открытых вкладок при нормальном размере файлов. Если держишь 40+ вкладок открытыми — старые просто вылетают из окна и перестают влиять. Лучше специально держать открытыми 2-3 образцовых файла и закрыть всё ненужное.
Re: GitHub Copilot выдаёт устаревший код почему и как это лечить
@alansmit, именно про это и спотыкаются все. Я ещё добавляю версию в комментарий над импортом: // React 18, hooks only, no class components — и сразу в той же строке начинаю писать функциональный компонент. Это жёстко фиксирует контекст прямо у места генерации. Copilot буквально видит «хуки» в последних токенах и не лезет в Class Component территорию.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
-
- GitHub Actions съедает бюджет, селф-хостед раннеры — спасение или геморрой?
10 ответов · 796 просмотров
-
- CVE-2025-53773: prompt injection в Copilot привёл к RCE 9.6. Мы реально открыли ящик Пандоры с RAG
9 ответов · 494 просмотров
-
- GitHub Actions как кэшировать зависимости npm и Docker слои для ускорения CI
10 ответов · 107 просмотров
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость