Часто задаваемые вопросы о модернизации C++ с помощью GitHub Copilot

Этот раздел FAQ отвечает на распространённые вопросы, которые могут возникнуть у пользователей C++ о модернизации с помощью GitHub Copilot.

Общие

Что такое GitHub Copilot для модернизации C++?

GitHub Copilot для модернизации C++ — это агент GitHub Copilot для Visual Studio, который помогает модернизировать проекты C++ и переводить их на более новые инструменты, библиотеки и шаблоны проектирования. Он распознает определенные задачи, такие как обновление средств сборки MSVC до более новых версий и предоставляет дополнительные средства и инструкции для выполнения этих задач. Она автоматизирует оценку, планирование и выполнение для выполнения задачи модернизации, и ее можно запустить в полностью автоматизированном режиме или в интерактивном режиме, который позволяет утверждать каждый шаг и предоставлять дополнительные рекомендации.

Какие среды разработки поддерживаются?

Средство модернизации кода C++ в GitHub Copilot доступно в Visual Studio 2026 версии 18.7 и более поздних.

Нужна ли подписка GitHub Copilot?

Yes. Для использования агента модернизации требуется активная GitHub Copilot подписка.

Отправляется ли мой код во внешние службы?

GitHub Copilot обрабатывает фрагменты кода в соответствии с политикой конфиденциальности Copilot GitHub. Код не сохраняется за пределами немедленного сеанса. Файлы рабочих процессов, такие как scenario-instructions.md и tasks.md, остаются в вашем репозитории и не передаются внешним службам.

Сценарии обновления MSVC

Какие типы проектов поддерживаются?

Агент поддерживает следующие типы проектов:

  • Проекты на основе MSBuild (.sln и .vcxproj).
  • Проекты на основе CMake.

В настоящее время агент не поддерживает проекты Unreal Engine (.uproject).

Что фактически изменяет агент в моем коде?

Агент изменяет исходный код для устранения ошибок сборки и предупреждений, представленных обновлением до более новой версии средств сборки MSVC. Распространённые изменения включают замену устаревших API, устранение проблем, вызванных использованием компилятора, в большей степени соответствующего стандартам, обновление директив #include в связи с удалением или перемещением заголовочных файлов, а также устранение ошибок компоновщика, вызванных изменениями в библиотеках. Когда проект находится в репозитории Git, все изменения фиксируются, чтобы можно было просмотреть и вернуть отдельные изменения.

Могу ли я контролировать, что именно изменяет агент?

Yes. Перед началом выполнения можно просмотреть и утвердить план, попросить агента пропустить конкретные проблемы или задачи и указать предпочтения в scenario-instructions.md. Вы также можете приостановить выполнение, перенаправить работу агента или отменить любой созданный им коммит.

Выполняет ли агент тесты?

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

Что делать, если агент ошибается?

Остановите агент и немедленно сообщите об этом. Он будет адаптироваться и применять исправления, когда вы сообщаете агенту возобновить работу. Вы также можете запустить git revert HEAD, попросить агента попробовать другой подход или исправить вручную.

Дополнительные сведения см. в разделе Устранение неполадок при модернизации кода C++ с помощью GitHub Copilot.

Можно ли обновить только часть решения?

Yes. Сообщите агенту, какие проекты необходимо обновить, например, Upgrade only the CoreLib project to the latest MSVC Build Tools. агент ограничивает свою работу указанными проектами.

Состояние и сеансы

Где агент хранит свое состояние?

Все состояние хранится в .github/upgrades/{SCENARIO ID} внутри вашего репозитория. Это включает оценку, план, ход выполнения задачи, ваши предпочтения и журналы выполнения.

Можно ли возобновить прерванное обновление?

Yes. Вы можете закрыть Visual Studio или завершить сеанс чата в любое время. Когда вы начинаете новый разговор, агент определяет текущее состояние и продолжает с того места, где остановился.

Следует ли зафиксировать папку .github/upgrades ?

Yes. Фиксация папки в вашей ветви выполняет резервное копирование, позволяет членам команды просматривать состояние обновления и помогает агенту возобновить работу из правильного состояния. После завершения обновления можно удалить папку.

Может ли несколько пользователей работать на одном обновлении?

Файлы состояния в .github/upgrades можно совместно использовать через Git. Однако только один человек должен активно взаимодействовать с агентом одновременно, чтобы избежать конфликтующих изменений.

Compatibility

С каких версий MSVC Build Tools можно выполнить обновление?

Агент поддерживает обновление с любой более ранней версии средств сборки MSVC до последней версии, поддерживаемой установкой Visual Studio.

Обрабатывает ли агент совместимость сторонних библиотек?

Агент определяет проблемы совместимости сторонних библиотек во время оценки. Он предлагает альтернативные варианты или обходные пути, когда они доступны. Если библиотека несовместима с целевым набором инструментов, агент документирует проблему, чтобы решить, как продолжить.

Можно ли использовать агент с предварительно скомпилированными заголовками?

Yes. Агент понимает конфигурации предкомпилированных заголовков и учитывает их в процессе обновления.