Что нового в GoLand 2023.3

В GoLand 2023.3 появилось несколько важных новых функций.

  • JetBrains AI Assistant стал официально доступен с добавлением ряда новых возможностей и улучшением уже существующих функций, которые сделают работу в JetBrains IDEs еще эффективнее.
  • Добавлена поддержка Dev Containers. Поддержка Dev Containers все еще дорабатывается и активно расширяется, поэтому эти функции доступны с пометкой «бета-версия».
  • Большое обновление стиля сворачивания кода для обработки ошибок, однострочных return и panic и другого кода.
  • Многочисленные подсказки, рефакторинги и быстрые исправления повысят производительность работы: например, подсказки для выражений slice, анализ кода для функций типа printf, улучшения отладчика.

Кроме того, в GoLand 2023.3 улучшена интеграция с Docker и Kubernetes, работа с системами контроля версий, также сделаны улучшения в области веб-разработки. А теперь подробнее!

AI Assistant Публичный доступ

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

Чтобы использовать AI Assistant как дополнительную функцию GoLand, вам потребуется подписка JetBrains AI Service.

AI Assistant для GoLand: Rename

Придумывать имена бывает сложно, но вам поможет AI Assistant в GoLand: он предложит удобные имена функций, чтобы улучшить читаемость кода.

AI Assistant для GoLand: Write documentation

Создание документации — довольно занудное, но необходимое дело. С помощью действия Write documentation вы сможете задокументировать свой код всего за пару кликов.

AI Assistant для GoLand: Generate Unit Test

AI Assistant поможет создать тесты для конкретных функций или методов, а после создания исходного тестового класса предложит добавить другие тест-кейсы.

Рефакторинги

Быстрое исправление Create function для создания функции в другом пакете

Это быстрое исправление позволяет ввести имя несуществующей функции и сгенерировать ее реализацию в выбранном пакете.

Рефакторинг Extract Parameter

В версии 2023.3 добавлена первая часть долгожданного рефакторинга Extract Parameter. Быстрое исправление Create Parameter для неразрешенных ссылок позволяет быстро найти такие ссылки и создать нужный параметр. Кроме того, с помощью этого же рефакторинга можно изменить тип параметра, если он указан недостаточно точно, указать значение по умолчанию и изменить вызовы, используя значения по умолчанию.

Dev Containers Бета-версия

Поддержка Dev Containers

Новая версия GoLand поддерживает полноценное использование Dev Containers в качестве среды разработки, где можно редактировать, собирать и запускать проекты. Dev Containers можно запустить удаленно через SSH-соединение или локально с помощью Docker.

Поддержка Dev Container Features

В GoLand 2023.3 добавлена поддержка Dev Container Features. Благодаря этому вы получаете удобный и быстрый способ интеграции инструментов, сред выполнения и библиотек, необходимых для работы.

Поддержка Docker Compose в Dev Containers

Мы также добавили поддержку Docker Compose в Dev Containers, так что теперь можно прямо из IDE запустить как основной, так и любые зависимые контейнеры, которые нужны в процессе разработки: например, контейнеры с базами данных или очередями сообщений.

Улучшенное сворачивание кода

Однострочные return и panic

Для однострочных return и panic теперь можно использовать новый компактный стиль сворачивания кода, который гораздо больше похож на исходный код.

Новый синтаксис сворачивания включен по умолчанию.

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

Функции с одиночным оператором return

Точно так же, как было сделано для однострочных return и panics, устроено сворачивание для функций с одиночным оператором return.

Обработка ошибок

Чтобы улучшить читаемость кода обработки ошибок, GoLand автоматически сворачивает в нем блоки if.
Кроме того, для блоков if в коде обработки ошибок GoLand сворачивает также все одиночные выражения, например, с вызовами журналов.

Отключено сворачивание кода для оператора форматирования string

Мы отключили сворачивание кода для форматирования string, чтобы соответствующий синтаксис был лучше виден. Более того, новый подход к сворачиванию кода позволяет редактировать блоки кода, не разворачивая их.

Автодополнение кода

Генерация выражений switch для перечислений enum

Новая версия GoLand может помочь в написании выражений switch для перечислений enum. Во всплывающем окне автодополнения появляются варианты генерации кейсов для всех значений.

Предупреждение об отсутствующих ветках, если кейсы содержат константу, объявленную с помощью iota

Инспекция помогает отслеживать выражения switch для констант iota. Она предупреждает о кейсах, не покрытых оператором switch, и предлагает два решения: добавить отсутствующие условия или условие по умолчанию.

Запуск и сборка

Профили покрытия кода для программ

С помощью этой функции можно увидеть, какой код был исполнен за один или несколько запусков. Кроме того, она помогает найти «мертвый» код.
Раньше она работала только с тестовыми запусками, но теперь функцию main тоже можно выполнить с использованием Coverage.

Другие изменения, связанные с Go

Подсказки параметров для выражений slice

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

Анализ кода для функций типа printf

GoLand предлагает много полезных возможностей для стандартных функций типа printf: подсветка плейсхолдеров, обнаружение ошибок, сворачивание кода и т. п. Теперь все эти возможности доступны и для функций типа printf, определенных пользователем.

Анализ потоков данных

В GoLand 2023.3 появился улучшенный анализатор потоков данных, использующий тот же движок, что и в CLion. Эта функция более полно находит проблемы в коде, например потенциальные разыменования nil, неверную или отсутствующую обработку ошибок, а также условия, которые всегда выдают одно значение true/false.

Обратите внимание, что эта возможность пока что доступна в режиме раннего доступа и по умолчанию отключена. Ее можно включить в меню Settings | Editor | Inspections | Go | Data Flow Analysis (experimental). Ждем ваших отзывов!

Поддержка локальной установки Go с asdf

asdf — инструмент командной строки, с помощью которого можно управлять несколькими версиями среды выполнения языка. Изучив отзывы членов сообщества, мы решили включить в новую версию поддержку asdf. В новом релизе GoLand будет проверять, какая версия Go указана в файле .tool-versions, и использовать соответствующую версию языка для выбранного проекта.

Прямая совместимость и управление тулчейном для Go 1.21

В Go 1.21 и более поздних версиях языка приняты более надежные меры для предотвращения ошибочной компиляции кода, требующего более новой версии Go. В частности, строка go в go.mod теперь указывает минимально необходимую версию Go toolchain, в то время как в прошлых релизах это была необязательная рекомендация.

Новая версия GoLand полностью поддерживает этот рабочий процесс и автоматически скачивает версию SDK, указанную в файле go.mod в строке go или toolchain. Кроме того, указанная версия автоматически указывается в настройках проекта Go.

Оптимизация производительности поддержки вендоринга

GoLand 2023.3 мигрировала на современный API платформы IntelliJ, поэтому go list -m не выполняется второй раз, если проект содержит директории vendor. Более эффективное использование кэширования улучшает производительность проектов, в которых много модулей Go.

Отладчик

Встроенная опция Run to Cursor в отладчике

Новый встроенный параметр Run to Cursor позволяет в ходе отладки выполнить код до определенной строки. После приостановки выполнения программы наведите курсор мыши на строку, до которой нужно выполнить код. Затем откройте всплывающее окно Run to Cursor и выполняйте код до строки, где находится курсор.

VCS

Поддержка сниппетов GitLab

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

Kubernetes

Добавление контекста кластера из файла

Теперь разработчику легко добавить контекст kubeconfig из кластеров, расположенных вне требуемой системы. Проект будет содержать ссылки на файлы kubeconfig, обеспечивая доступ к нужным кластерам в ходе работы над проектом. Добавленное таким образом содержимое kubeconfig не будет скопировано в систему или изменено в ней (~/.kube/config). Эта функция особенно удобна, если вы часто добавляете кластеры Kubernetes и удаляете из облака или локальной среды. Подробнее

Автоматическая установка инструментов Kubernetes

Для работы с плагином Kubernetes вам может потребоваться установить kubectl или Helm. Если на вашем компьютере еще нет этих инструментов, IDE предложит установить их автоматически.

Более удобная отладка с помощью Telepresence

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

Поддержка блоков import в Terraform

GoLand поддерживает блоки import верхнего уровня из языка описания конфигурации Terraform версии 1.5. Блоки import позволяют управлять имеющейся инфраструктурой с помощью Terraform. Если использовать import используется в блоке кода, тот становится частью стандартных циклов plan и apply и перестает быть операцией состояния. Terraform автоматически генерирует код для импортированных ресурсов, экономя время при создании инфраструктуры как кода.

Другие обновления

Улучшения для TypeScript

В GoLand устранен ряд нарушений правил при добавлении инструкций import type. Мы добавили возможность настроить использование инструкций TypeScript import type или спецификатора типа при импорте типа. Кроме того, улучшено поведение поля exports в package.json для файлов TypeScript.

Улучшения HTTP-клиента

Мы доработали представление Structure, чтобы упростить навигацию по большим .http файлам. Также в новой версии появились цветные метки для типов запросов, а их содержимое отображается более понятным образом. Кроме того, мы добавили поддержку объявления переменных с помощью @ и аутентификацию с использованием типов предоставления доступа Password и Client Credentials в OAuth 2.0.

Поддержка Cypress и Playwright

GoLand автоматически найдет тесты Cypress и Playwright и поможет вам одним щелчком выполнить их запуск и отладку. Кроме того, поддержка включает в себя возможность проанализировать результаты и найти ошибки с помощью навигации по дереву тестов (Test Tree).

Единый инструмент поиска различий

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