Изучение функций завершения кода GitHub Copilot

Завершено

GitHub Copilot предоставляет предложения по стилю автозаполнения при вводе кода. Помимо стандартных предложений автозаполнения, GitHub Copilot также предоставляет предложения по следующему редактированию (NES), которые прогнозируют расположение следующего изменения, которое вы, скорее всего, выполните, и предлагают его завершение.

При выполнении следующих действий вы получаете предложения в стиле автозаполнения:

  • Введите частичную или полную строку кода в редакторе.
  • Введите частичный или полный комментарий кода в редакторе.
  • Введите пустую строку кода в редакторе.

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

Сформируйте предложение автодополнения

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

Например, предположим, что вы хотите создать метод C# с именем addInt, который возвращает сумму двух целых чисел. Если вы начинаете вводить подпись метода, GitHub Copilot предлагает код, который он считает, что вы хотите создать.

Снимок экрана, показывающий автозаполнение при сложении двух чисел.

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

снимок экрана, показывающий принятое предложение автозаполнения.

Чтобы закрыть предложение, нажмите клавишу ESC.

Пример addInt несколько упрощен, поэтому вы можете задуматься о том, как GitHub Copilot справляется с чем-то более сложным.

Предположим, вы хотите создать метод, который принимает список чисел и возвращает сумму простых чисел, содержащихся в списке. Можно назвать метод addPrimeNumbersInNumericList. Как только вы начинаете вводить сигнатуру метода, GitHub Copilot генерирует предложение для вас. Рассмотрим пример.

Снимок экрана: автозавершение для метода, добавляющего простые числа в список.

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

Давайте продолжим сценарий немного дальше.

После объединения предложения в код обратите внимание, что метод isPrime подчеркнут красным цветом. Это связано с тем, что метод isPrime еще не существует в коде.

Снимок экрана, показывающий метод addPrimeNumbersInNumericList, объединенный в код, с подчеркнутым красным цветом isPrime.

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

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

Скриншот, показывающий автозаполнение для добавления метода isPrime.

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

Управление подсказками автозаполнения

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

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

снимок экрана с опцией

Интерфейс по умолчанию для управления предложениями включает следующие параметры:

  • Примите предложение (в полном объеме), нажав кнопку "Принять". Вы также можете принять предложение, нажав клавишу TAB.
  • Частично примите предложение, выбрав Accept Word. Вы также можете частично принять предложение, нажав Ctrl + клавиши (стрелка вправо).
  • Просмотрите альтернативные предложения, выбрав > или <. Кроме того, можно просмотреть альтернативные варианты, нажав клавиши Alt + ] или Alt + [.

Выбор параметра Accept Word принимает следующее слово в предложении. Это полезно, если вы хотите принять часть предложения, а затем продолжить ввод собственного кода. Например, можно принять первое слово предложения метода isPrime.

Скриншот с параметром

Продолжайте выбирать Accept Word, пока не примите столько предложений, сколько хотите.

Щелкните значок с многоточием (...) справа от кнопки "Принять слово", чтобы получить дополнительные параметры, такие как Always Show Toolbar и Open Completions Panel.

Снимок экрана: дополнительные параметры панели инструментов для предложений автозаполнения.

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

Замечание

Чтобы принять всю строку предложения, необходимо настроить настраиваемое сочетание клавиш для editor.action.inlineSuggest.acceptNextLine команды. Этот параметр по умолчанию недоступен на панели инструментов.

Создание предложений кода из комментариев

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

Давайте вернемся к примеру простых чисел. На этом этапе у вас есть следующий код:

снимок экрана, показывающий текущий код для примера простого числа.

Методы addPrimeNumbersInNumericList и isPrime кажутся завершёнными. Однако вам по-прежнему нужен список чисел, которые можно использовать в качестве аргумента при вызове метода addPrimeNumbersInNumericList. Вы можете написать комментарий, описывающий список нужных чисел. Например, список из 100 случайных чисел, которые варьируются от 1 до 1000.

При вводе комментария GitHub Copilot предлагает автозавершение, которое завершает комментарий. GitHub Copilot использует окружающий код для улучшения своих предложений. Например, если вы начнете вводить комментарий // create, GitHub Copilot использует окружающий код для прогнозирования того, что нужно создать. В этом случае GitHub Copilot использует метод addPrimeNumbersInNumericList, чтобы предсказать ваше намерение создать a list of numbers.

Снимок экрана: слово

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

Скриншот, на котором показано добавление фразы

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

Скриншот, на котором GitHub Copilot добавляет первую строку кода.

Примите все предложения по мере их появления.

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

Если GitHub Copilot не завершил работу, создается другое предложение для принятия.

Скриншот, показывающий завершение списка чисел с помощью GitHub Copilot.

Если вы вводите новую строку кода после завершения фрагмента кода, GitHub Copilot создает другие предложения автозаполнения на основе требований проекта кода. В этом случае GitHub Copilot предлагает кодовую строку, которая вызывает метод addPrimeNumbersInNumericList, передавая список с именем numbers.

Снимок экрана, на котором GitHub Copilot предлагает вызов метода call.

Просмотр нескольких предложений с помощью панели завершения GitHub Copilot

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

Чтобы продемонстрировать эту функцию, давайте вернемся к более ранней стадии в примере простых чисел.

Предположим, вам по-прежнему нужно создать метод isPrime. Когда вы вводите пустую строку ниже метода addPrimeNumbersInNumericList, GitHub Copilot предлагает метод isPrime. Это тот же процесс, который использовался ранее. Однако предположим, что вы не удовлетворены предложениями, которые предлагает GitHub Copilot, и хотели бы увидеть больше вариантов.

Чтобы открыть панель завершения GitHub Copilot и просмотреть другие предложения, нажмите клавиши Ctrl + Enter. Вы также можете открыть меню "Дополнительные действия" и выбрать Открыть панель завершения.

Снимок экрана, показывающий вкладку предложений GitHub Copilot.

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

Чтобы принять предложение, выберите метку Принять предложение НОМЕР под предложением. Например, выберите метку "Принять предложение 1" под первым предложением.

Чтобы отклонить все предложения, закройте вкладку.

Сводка

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