Рефакторинг кода с помощью режимов чата GitHub Copilot

Завершено

GitHub Copilot можно использовать для рефакторинга кода в базе кода. Агенты представления чата можно использовать для анализа, планирования и реализации задач рефакторинга кода. Агенты представления чата предоставляют удобный интерфейс для управления беседами чата и доступа к функциям GitHub Copilot. Представление чата включает следующих встроенных агентов:

  • Вопрос. Используйте запрос, чтобы задать вопросы о базе кода или концепциях технологий. Вы можете использовать запрос, чтобы объяснить код, предложить редакции или исправления или предоставить сведения, связанные с базой кода.
  • План. Используйте агент плана для создания структурированного пошагового плана реализации перед написанием кода. Когда план кажется правильным, передайте его агенту по реализации для выполнения.
  • Агент: используйте агент для запуска рабочего процесса программирования агента. Агент можно использовать для выполнения команд, выполнения кода или выполнения других задач в рабочей области.

Это важно

При использовании агента GitHub Copilot может выполнять несколько запросов класса Premium для выполнения одной задачи. Премиальные запросы могут использоваться для запросов, инициированных пользователем, и последующих действий, выполняемых GitHub Copilot от вашего имени. Общий объем запросов уровня "Премиум", используемых, зависит от сложности задачи, количества выполняемых шагов и выбранной модели.

Используйте Ask для рефакторинга кода.

Вы можете использовать запрос, чтобы получить помощь с задачами программирования, понять сложные понятия и улучшить код. Ask предназначен для интерактивных бесед с GitHub Copilot Chat. Вы можете задавать вопросы, получать объяснения или запрашивать предложения в режиме реального времени.

  1. Откройте представление чата и нажмите кнопку "Запросить".

  2. Добавьте контекст в чат.

    Ask поддерживает участников чата, слэш-команды и переменные чата. Вы можете добавить участника чата @workspace или #codebase в чат, чтобы предоставить контекст вместе с файлами или папками.

  3. Задавайте вопросы, которые помогут вам понять код, который вы хотите подвергнуть рефакторингу, и изменения, которые вы хотите внести.

    Например, вы можете попросить GitHub Copilot помочь вам понять существующий код проверки подлинности, как обновить текущий метод с помощью OAuth.

  4. Создайте запрос, описывающий обновление, которое требуется реализовать.

    Запрос должен содержать описание функции кода, которую вы хотите реализовать. Рассмотрим пример.

    @workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.
    
  5. Просмотрите предлагаемый код в представлении чата.

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

  6. Чтобы реализовать предлагаемый код, можно навести указатель мыши на фрагмент кода, а затем выбрать между параметрами "Применить", "Вставить" и " Копировать ".

    • Применить: применяет предложение кода к текущему файлу в редакторе.
    • Вставка: вставляет предложение кода в текущее положение курсора в редакторе.
    • Копировать: копирует предложение кода в буфер обмена.
  7. Проверьте рефакторинг кода, чтобы убедиться, что он выполняется без ошибок и создает ожидаемый результат.

Использовать план для рефакторинга кода

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

Подсказка

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

  1. Откройте представление чата и выберите "План".

  2. Добавьте контекст в чат.

    Укажите контекст рабочей области с помощью #codebase и добавлением файлов в чат.

  3. Создайте запрос, описывающий компонент кода, который требуется реализовать.

    Запрос должен содержать описание функции кода, которую вы хотите реализовать. Рассмотрим пример.

    
    #codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.
    
    
  4. Просмотрите структурированный план реализации, который GitHub Copilot создает.

    Агент плана создает пошаговый план, который можно просмотреть перед внесением изменений в код.

  5. Когда план выглядит правильно, передайте его исполнителю, чтобы выполнить его.

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

  6. Просмотрите предлагаемые изменения в редакторе кода.

  7. Примите или отмените предложенные изменения.

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

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

Использование агента для рефакторинга кода

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

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

Это важно

При использовании агента GitHub Copilot может выполнять несколько запросов класса Premium для выполнения одной задачи. Премиальные запросы могут использоваться для запросов, инициированных пользователем, и последующих действий, выполняемых GitHub Copilot от вашего имени. Общий объем запросов уровня "Премиум", используемых, зависит от сложности задачи, количества выполняемых шагов и выбранной модели.

  1. Откройте представление чата и выберите агент.

  2. Создайте запрос, описывающий задачу, которую требуется выполнить GitHub Copilot.

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

    Рассмотрим пример.

    
    Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.
    
    
  3. Агент может вызывать несколько инструментов для выполнения различных задач. При необходимости выберите значок "Сервис", чтобы настроить средства, которые можно использовать для реагирования на запрос.

  4. Подтвердите вызовы инструментов и команды терминала.

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

  5. GitHub Copilot обнаруживает ошибки и проблемы в изменениях кода и командах терминала и повторяет и выполняет действия для их устранения.

    Это важно

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

  6. Просмотрите предложенные изменения и примите или отмените предложенные изменения.

  7. Проверьте рефакторинг кода, чтобы убедиться, что он создает ожидаемый результат.

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

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

Когда выбрать агента вместо плана

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

  • Планирование. План создает структурированный пошаговый план реализации перед написанием кода. Агент автономно определяет соответствующий контекст и файлы для редактирования и начинает вносить изменения напрямую.
  • Сложность задачи. Агент лучше подходит для сложных задач, требующих редактирования кода и вызова средств или команд терминала.
  • Длительность. Агент использует несколько шагов для обработки запроса, поэтому для создания ответа может потребоваться больше времени. Например, чтобы определить соответствующий контекст и файлы для редактирования, определить план действий и многое другое.
  • Самовосстановление: агент оценивает результат созданных изменений и может выполнять итерацию несколько раз, чтобы устранить промежуточные проблемы.
  • Квота запроса. При использовании режима агента в зависимости от сложности задачи один запрос может привести к множеству запросов к серверной части.

Сводка

GitHub Copilot можно использовать для рефакторинга кода в базе кода. Агенты представления чата можно использовать для анализа, планирования и реализации задач рефакторинга кода. Окно чата включает три встроенных агента: Ask, Plan и Agent. Вы можете задавать вопросы о вашей кодовой базе или технологических концепциях. План можно использовать для создания структурированного плана реализации перед написанием кода. Агент можно использовать для запуска рабочего процесса программирования агента.