Используйте настройку кода Gemini Code Assist

В этом документе описывается, как использовать функцию настройки кода Gemini Code Assist , и приводятся несколько рекомендаций по её применению. Эта функция позволяет получать рекомендации по коду, основанные на внутренних библиотеках, закрытых API и стиле кодирования вашей организации.

Прежде чем начать

  1. Настройте Gemini Code Assist с помощью корпоративной подписки .
  2. Настройте параметры персонализации кода в Gemini Code Assist .

Как использовать настройку кода

В таблице ниже перечислены способы использования функции настройки кода Gemini Code Assist:

Форма Как запустить Примечания и ресурсы

Чат на естественном языке

Введите подсказку на естественном языке в чате Gemini Code Assist в IDE.

Рассмотрим следующее:

  • История чата недоступна. Избегайте многоэтапных запросов.
  • Вы можете запросить более подробную информацию об источниках, включая ссылки на конкретные источники.
  • Если вы выделяете или цитируете код при отправке сообщения в чате, Gemini Code Assist использует этот код для улучшения персонализации кода и качества общения в чате.

Для получения более подробной информации см. раздел «Чат с Gemini Code Assist» .

Сгенерировать код В панели быстрого выбора в вашей IDE, независимо от того, выделен код или нет, нажмите Command+Enter (в macOS) или Control+Enter . Для получения более подробной информации см. раздел «Генерация кода с подсказками» .
Код преобразования В панели быстрого выбора в вашей IDE, независимо от того, выделен код или нет, введите /fix . Для получения более подробной информации см. раздел «Генерация кода с подсказками» .
Автозаполнение Функция настройки кода запускается автоматически и предлагает варианты, основанные на написанном вами тексте.

Рассмотрим следующее:

  • Для того чтобы предложить решение с помощью автозавершения кода, необходим определенный уровень уверенности. Убедитесь, что доступен достаточный объем кода, чтобы можно было получить соответствующие фрагменты.
  • Функция автозавершения кода проверяет наличие необходимых библиотек для использования определенных элементов функции.

Для получения более подробной информации см. раздел «Получение автозавершения кода» .

Контекст удаленного репозитория
  1. Начните ввод командной строки с символа @ . Появится список доступных индексированных удалённых репозиториев.
  2. Выберите из списка репозиторий, который хотите использовать в качестве контекста. Вы также можете начать вводить название репозитория, чтобы отфильтровать список.
  3. После выбора репозитория напишите остальную часть запроса.

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

Для получения более подробной информации см. раздел «Получайте более релевантные предложения с учетом контекста удаленного репозитория» .

Примеры использования и примеры подсказок

В таблице ниже приведены рекомендации и примеры использования персонализации кода в конкретных сценариях:

Вариант использования Что стоит попробовать
Написание нового кода

Попробуйте следующий способ генерации кода в вашей IDE или чате Gemini Code Assist:

  • Сгенерируйте код, который будет использовать термины, уже упомянутые в вашем коде.
  • Вставьте свой код, например, функциональную сигнатуру или код с комментариями TODO , а затем попросите Gemini Code Assist заполнить или заменить комментарии TODO кодом. Добавьте комментарии с пояснениями из контекста.

Попробуйте сгенерировать код, используя следующие подсказки в чате Gemini Code Assist:

  • «Напишите главную функцию, которая устанавливает соединение с DATABASE . Включите проверки работоспособности».
  • "Напишите FUNCTION_OR_CLASS в следующей структуре: EXPLAIN_STRUCTURE ."

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

  • "Попробуйте использовать команду /fix для корректировки сгенерированного кода — например, для исправления синтаксических ошибок."
  • "Добавить недостающие импортные данные."
  • "Попробуйте /fix в коде, сгенерированном чатом."
Очистка, упрощение и рефакторинг кода.

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • "Не могли бы вы объединить IMPORTS_VARIABLES_OR_NOTE_EXPORTED_FUNCTIONS в этом файле?"
  • «Как бы вы упростили функцию FUNCTION_NAME
  • "Можно ли объединить FUNCTION_NAME_1 и FUNCTION_NAME_2 в одну функцию?"
  • "Не могли бы вы встроить несколько переменных непосредственно в FUNCTION_NAME ?"
  • "Не могли бы вы упростить именование переменных в функции FUNCTION_NAME ?"
Читабельность

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «По возможности, упростите код для функции FUNCTION_NAME , используя меньшее количество строк».
  • "Добавить комментарии к функции FUNCTION_NAME ."
  • "Удалить лишние пробелы в имени функции FUNCTION_NAME ."
  • "Форматируйте имя функции FUNCTION_NAME аналогично остальному коду."
Проверка кода

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «Разделите код на части и объясните каждую часть, используя наш код».
  • «Есть ли переменные или ключевые слова, которые можно было бы сократить и сделать более понятными?»
  • "Не могли бы вы предоставить мне полезный код из контекста REPOSITORY_NAME_PACKAGE_MODULE для этого кода?"
  • «Что вы думаете о функции FUNCTION_NAME
Отладка

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «У меня возникает ошибка при попытке выполнить операцию X/добавить Y. Почему?»
  • "Вы можете найти ошибку в функции FUNCTION_NAME ?"
  • «Как бы вы исправили функцию FUNCTION_NAME , учитывая это сообщение об ошибке?»
Обучение и адаптация

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «Разделите этот код на части и объясните каждую из них, используя наш код».
  • "Покажите, как вызвать функцию FUNCTION_NAME ?"
  • "Покажите, как запустить основную функцию в среде ENVIRONMENT_NAME ?"
  • «Какое ключевое техническое улучшение мы можем внести, чтобы повысить производительность этого кода?»
  • «Покажите мне реализацию FUNCTION_OR_CLASS_NAME для достижения лучших результатов и укажите, что это за конкретный элемент» — например, «Покажите мне реализацию функции foo, где foo — это имя функции».
Миграция

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «Предложите стратегию переноса FILE_NAME из LANGUAGE_1 в LANGUAGE_2 » — например, с Go на Python.
  • "Учитывая наличие функции FUNCTION_NAME в репозитории REPOSITORY_NAME , найдите мне эквивалентную функцию в языке LANGUAGE_NAME , которую я могу использовать."

Попробуйте следующий рабочий процесс преобразования кода с использованием чата или генерации кода, используя подсказки:

  1. "Возьмите код FILENAME_COMPONENT уже написанный на LANGUAGE_1 , проведите рефакторинг и перенесите его на LANGUAGE_2 " — например, с Go на Python.
  2. После переноса части кода попробуйте следующее:
    • Выберите более мелкие фрагменты и используйте /fix , чтобы привести их в нужное состояние.
    • Попробуйте выполнить следующие действия:
      • «Что можно улучшить?»
      • «Укажите возможные болевые точки».
      • «Как бы вы проверили этот код, если миграция выполнена корректно?»
Создание документации

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • «Кратко опишите код в пакете или папке X и предоставьте документацию для пяти наиболее важных методов».
  • "Сгенерировать документацию для FUNCTION_OR_CLASS_NAME ."
  • «Сократите объем документации, сохранив при этом ключевую информацию».
генерация модульных тестов

Попробуйте выполнить следующие действия в чате Gemini Code Assist:

  • "Сгенерировать модульные тесты для FILENAME ."
  • "Добавьте наиболее подходящие тестовые примеры для функции FUNCTION_NAME ."
  • «Удалите тестовые примеры, которые, по вашему мнению, не приносят большой пользы».

Передовые методы

  • Используйте соответствующие имена переменных и функций или фрагменты кода. Это поможет настроить код, выбрав наиболее подходящие примеры.
  • Используйте репозитории индексов, которые вы хотите масштабировать, и избегайте добавления устаревшей функциональности. Настройка кода помогает масштабировать его в соответствии со стилем кода, шаблонами, семантикой кода, знаниями и реализациями в рамках всей кодовой базы. Плохими примерами масштабируемых репозиториев являются устаревшая функциональность, сгенерированный код и устаревшие реализации.
  • Для задач поиска кода используйте функцию генерации кода вместо автозавершения кода . Используйте подсказки, например: «Используя определение FUNCTION_NAME , сгенерируйте точно такую ​​же функцию» или «Сгенерируйте точную реализацию FUNCTION_NAME ».
  • Для повышения контекстной осведомленности Gemini необходимо включить в файл необходимые директивы include или import для кода, который вы хотите получить .
  • Для каждого запроса выполняйте только одно действие. Например, если вы хотите получить код и использовать его в новой функции, выполните эти шаги для двух запросов.
  • Для случаев, когда вам нужно больше, чем просто код (например, объяснение кода, план миграции или объяснение ошибок), используйте настройку кода в чате, где вы можете общаться с Gemini, используя контекст вашей кодовой базы.
  • Обратите внимание, что генерация модели ИИ является детерминированной . Если вас не устраивает ответ, повторное выполнение того же запроса может дать лучший результат.
  • Обратите внимание, что генерация модульных тестов обычно работает лучше, если вы откроете файл локально, а затем через чат запросите генерацию модульных тестов для этого файла или конкретной функции.

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

Чтобы получать более контекстно-ориентированные и релевантные подсказки по коду, настройте Gemini Code Assist на работу с конкретными удаленными репозиториями. Используя символ @ в чате, вы можете выбрать один или несколько репозиториев, которые будут использоваться в качестве основного источника контекста для ваших подсказок. Это полезно, когда вы работаете над задачей, которая в основном связана с определенным набором микросервисов, библиотек или модулей.

Чтобы использовать удалённый репозиторий в качестве контекста, выполните следующие действия в чате вашей IDE:

  1. Начните ввод командной строки с символа @ . Появится список доступных индексированных удалённых репозиториев.
  2. Выберите из списка репозиторий, который хотите использовать в качестве контекста. Вы также можете начать вводить название репозитория, чтобы отфильтровать список.
  3. После выбора репозитория напишите остальную часть запроса.

Затем Gemini отдаст приоритет выбранному репозиторию при формировании ответа.

Примеры подсказок

Вот несколько примеров того, как можно использовать эту функцию:

  • Чтобы понять, что такое репозиторий:
    • " @ REPOSITORY_NAME Какова общая структура этого репозитория?"
    • « @REPOSITORY_NAME Я новый член команды. Не могли бы вы рассказать мне о назначении этого репозитория и REPOSITORY_NAME ключевых модулях?»
  • Для генерации и изменения кода:
    • " @ REPOSITORY_NAME Реализуйте функцию аутентификации, аналогичную той, что находится в этом репозитории."
    • " @ REPOSITORY_NAME Измените следующий код в соответствии с соглашениями, принятыми в выбранном репозитории."
    • " @ REPOSITORY_A_NAME Как я могу использовать новейшие функции из этого репозитория для улучшения своего кода в REPOSITORY_B_NAME ?"
  • Для тестирования:
    • " @ UNIT_TEST_FILE_NAME Сгенерировать модульные тесты для MODULE на основе примеров из выбранного файла."

Используя удалённые репозитории в качестве целенаправленного источника контекста, вы можете получать более точные и релевантные подсказки от Gemini Code Assist, что поможет вам писать код быстрее и эффективнее.