Что нового в GoLand

В GoLand 2023.2 улучшена интеграция с Go-модулями, добавлены рефакторинги для миграции параметров функций в ресиверы методов и наоборот, а также поддержка errors.Is и errors.As.

Кроме того, в этой версии вас ждет новый плагин AI Assistant, интеграция с GitLab и плагин для работы с Kafka.

Кроме того, мы усовершенствовали интеграцию с Docker и плагин Kubernetes.

Если вы предпочитаете узнавать о новой функциональности в интерактивной форме, пройдите урок What's New in GoLand 2023.2 на начальном экране в разделе Learn.

Go-модули

Настройки Go modules в GoLand

Автоматическая загрузка модулей

В GoLand появилась возможность автоматической загрузки Go-модулей при открытии проекта и после любого изменения файла go.mod. Эта опция включена по умолчанию, но ее можно в любой момент отключить в разделе Settings | Go | Go Modules.

Быстрое исправление для обновления зависимостей в go.mod

Действия для обновления зависимостей в go.mod

Мы добавили несколько intention-действий и инспекций, чтобы ускорить обновление зависимостей в файлах go.mod.

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

Опция отключения вендоринга в GoLand

Опция отключения вендоринга

Теперь можно отключить вендоринг для каждого проекта по отдельности, например, когда у вас есть монорепозиторий, содержащий папку vendor, используемую другим языком. Отключить вендоринг можно при создании нового проекта или в любое другое время в разделе Settings | Go | Go Modules.

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

Применение рефакторинге Migrate function parameter to method receiver в GoLand

Миграция параметров функций и ресиверов методов

GoLand предлагает два новых рефакторинга: Migrate function parameter to method receiver и Migrate method receiver to function parameter.

Рефакторинг Migrate function parameter to method receiver позволяет преобразовать функцию в метод типа, а Migrate method receiver to function parameter делает обратное — преобразует метод типа в функцию.

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

В GoLand теперь есть быстрое исправление, предлагающее преобразовать прямое сравнение ошибок в использование errors.Is

Поддержка errors.Is и errors.As

Две новые инспекции указывают на случаи, когда следует использовать errors.Is или errors.As. Новые быстрые исправления помогут выполнить рефакторинг существующего кода под использование errors.Is или errors.As.

Первая инспекция подсвечивает прямые сравнения ошибок. В Go 1.13 и более поздних версиях ошибки могут быть обернуты в функцию fmt.Errorf с глаголом %w, и прямое сравнение ошибок с помощью проверки на равенство в таких случаях может оказаться неудачным.

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

В GoLand появилось быстрое исправление предлагает преобразовать утверждения типов и переключатели типов при ошибках в использование errors.As

Вторая инспекция подсвечивает утверждения типов и переключатели типов при ошибках, например err.(*MyErr) или switch err.(type), поскольку они тоже могут не работать при обернутых ошибках.

В Go 1.13 и более поздних версиях предпочтительнее использовать errors.As. Новое быстрое исправление предлагает преобразовать утверждения типов и переключатели типов при ошибках в использование errors.As.

Go 1.21

Поддержка min, max и clear

В GoLand 2023.2 реализована базовая поддержка min, max и clear — новых функций, появившихся в Go 1.21.

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

Варианты автодополнения для аргумента функции make

Автодополнение аргументов функции make

Мы добавили автодополнение с учетом типов для вызовов функции make.

Уведомление GoLand о некорректном использовании функции make

Проверка аргументов функций make

GoLand теперь находит ошибки и избыточные аргументы в функциях make. Для удаления лишних аргументов есть быстрое исправление, перейти к которому можно, как и всегда, нажав Alt+Enter.

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

Ресивер показывается в качестве первого параметра в списке вариантов автодополнения, когда метод вызывается непосредственно на типе

Автодополнение типов-ресиверов в выражениях методов

При вызове метода непосредственно на типе в качестве первого аргумента необходимо указать тип-ресивер. В этих случаях GoLand теперь показывает ресивер в качестве первого параметра в предлагаемых вариантах автодополнения.

Сообщение об ошибке, связанной с отсутствием аргументов в инстанцировании типа

Дженерики: улучшенное сообщение об ошибке при отсутствии аргументов

Сообщение об ошибке, связанной с отсутствием аргументов в инстанцировании типа, теперь четко дает понять, что именно не так.

Превью действия Wrap error handling in a closure в GoLand

Превью действия Wrap error handling in a closure

Мы добавили превью действия Wrap error handling in a closure. Превью можно отключить, нажав Ctrl+Q, когда открыт список intention-действий, и оно будет отключено до тех пор, пока вы вновь не включите его с помощью того же сочетания клавиш.

Предупреждение об избыточном условии в цикле for

Предупреждение о лишних условиях в циклах for

Теперь GoLand показывает предупреждение о наличии избыточных условий в циклах for. Удалить лишнее условие можно с помощью быстрого исправления.

AI Assistant

Предложения плагина AI Assistant по улучшению кода

AI Assistant Ограниченный доступ

В этой версии мы представляем важное дополнение к GoLand — AI Assistant. Текущий набор функций AI Assistant включает в себя чат-бота на основе искусственного интеллекта, автоматическое создание документирующих комментариев, предложение имен, генерацию сообщений коммитов и многое другое.

AI Assistant работает на базе сервиса JetBrains AI, который сейчас подключается к OpenAI, а в будущем будет интегрирован с другими языковыми моделями. Для доступа к функциям ассистента нужно установить плагин JetBrains AI и войти в сервис JetBrains AI, используя свой JetBrains-аккаунт. На начальном этапе доступ к сервису может быть ограничен. Подробнее об AI Assistant и о том, как получить к нему доступ, читайте в документации.

Docker

Превью содержимого слоя Docker-образа в окне Services

Превью файлов внутри слоев Docker-образов

В окне Services теперь можно посмотреть превью содержимого слоев Docker-образов. Выберите образ из списка, нажмите Show layers, а затем Analyze image for more information. Вы увидите список файлов, хранящихся в слое, из которого можно легко открыть выбранный файл в редакторе, кликнув по нему правой кнопкой мыши и выбрав Open File (или Download File для исполняемых файлов).

Настройка запуска Docker-контейнера в качестве задачи Before Launch

Запуск Docker-контейнера в качестве задачи Before Launch

Теперь можно запускать конфигурацию запуска Docker перед другой конфигурацией, обозначив ее как Before Launch. IDE не будет инициировать следующую конфигурацию запуска, пока текущий контейнер не достигнет состояния готовности. Чтобы поставить конфигурацию запуска Docker в очередь, сначала создайте ее, а затем добавьте в соответствующий контейнер в разделе Modify options | Add before launch task | Run configuration.

Плагин Kubernetes

Отображение настроек Kubernetes в GoLand

Поддержка нескольких файлов kubeconfig в одном проекте

В GoLand появилась возможность использовать несколько файлов kubeconfig в одном проекте. Это упрощает работу с несколькими кластерами или средами на разных кластерах в рамках одного проекта. Для настройки файлов перейдите в раздел File | Settings | Build, Execution, Deployment | Kubernetes.

Отображение журналов развертывания Kubernetes в GoLand

Просмотр журналов развертывания

Теперь в окне Services можно просматривать журналы развертывания в кластерах Kubernetes. Кликните правой кнопкой мыши по Deployment в дереве, а затем выберите Follow Log или Download Log в контекстном меню.

Производительность

Новый инструмент для быстрого создания общих индексов

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

Управление версиями

Выбор строк для коммита

Коммит отдельных строк кода

В GoLand теперь можно включать в коммит только определенные фрагменты кода. Для этого выберите нужные строки внутри блока кода и вызовите действие Include these lines into commit из контекстного меню. Блок будет разделен на отдельные строки, а выбранные строки будут подсвечены. Используйте флажки или контекстное меню, чтобы добавить или снять выделение со строки.

Интеграция с GitLab

Функциональность GitLab-плагина в GoLand

В GoLand 2023.2 появилась интеграция с GitLab для оптимизации вашего рабочего процесса. Теперь можно пользоваться функцией Merge Request прямо из IDE: просматривать список реквестов, проверять изменения, оставлять комментарии и переходить к соответствующим представлениям.

Плагин для Kafka

Функциональность Kafka-плагина в GoLand

Плагин для Kafka

Новый Kafka-плагин позволяет контролировать процессы потоковой передачи событий Kafka. Вы можете подключаться к кластеру Kafka, производить и потреблять сообщения в разных форматах, управлять темами и отслеживать группы потребителей, а также использовать Confluent Schema Registry и AWS Glue Schema Registry. Подробнее

Взаимодействие с IDE

Выбор встроенной конфигурации сочетаний клавиш VS Code в настройках GoLand

Сочетания клавиш из VS Code

Если вы привыкли к конфигурации сочетаний клавиш VS Code, теперь ее можно выбрать в разделе Customize на начальном экране IDE. Конфигурацию сочетаний клавиш также можно поменять в разделе Settings | Keymap.

Сортировка файлов по времени изменения

Сортировка файлов по времени изменения на панели Project

В GoLand 2023.2 появилось долгожданное упорядочивание файлов по времени изменения. Пересортировка файлов происходит автоматически при сохранении изменений в проекте. Чтобы включить эту функцию, нажмите на три точки на панели Project и выберите Tree Appearance | Sort by Modification Time.

Опция закрепления конфигурации запуска в GoLand

Закрепленные конфигурации запуска в виджете Run

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

Добавление кнопки Update Project на главную панель инструментов

Расширенные настройки главной панели инструментов

Мы расширили возможности кастомизации главной панели инструментов в новом интерфейсе. Теперь в выпадающем меню можно быстро выбрать действия, которые вы хотите добавить на панель. Для этого кликните правой кнопкой мыши по любому виджету и выберите опцию Add to Main Toolbar, чтобы увидеть доступные варианты.

Превращение меню в отдельную панель инструментов на Windows

Переработанное меню на главной панели инструментов для Windows и Linux

В новом интерфейсе изменился дизайн меню на главной панели инструментов для Windows и Linux. Теперь элементы меню отображаются по горизонтали на панели инструментов. Кроме того, это меню можно превратить в отдельную панель с помощью опции View | Appearance | Main menu as a Separate Toolbar.

Выбор опции Open Directories with Single Click в настройках GoLand

Навигация по папкам проекта одним кликом

Новая опция Open Directories with Single Click позволяет быстрее разворачивать и сворачивать папки проектов на панели Project. Вы найдете ее в выпадающем меню, если нажмете на три точки.

Результаты текстового поиска в окне Search Everywhere

Текстовый поиск в Search Everywhere

Функция Search Everywhere (двойное нажатие Shift) в основном используется для поиска файлов, методов, действий и настроек. Теперь же она включает в себя текстовый поиск, аналогичный Find in Files. Результаты текстового поиска отображаются в тех случаях, когда по заданному запросу мало или вообще нет других результатов. По умолчанию текстовый поиск включен, но вы можете изменить настройки в разделе Settings | Advanced Settings.

Подсветка синтаксиса в описании инспекции

Подсветка синтаксиса в описаниях инспекций

В разделе Settings | Editor | Inspections теперь работает подсветка синтаксиса в примерах кода. Так проще понять, что активирует инспекцию, и решить, нужна она вам или нет.

Рекомендации плагинов в разделе Plugins

Рекомендации плагинов в Settings

Чтобы вам было проще настраивать GoLand под ваши проекты и расширять функциональность IDE при помощи плагинов, мы переработали интерфейс раздела Settings | Plugins. Теперь вы найдете там список рекомендуемых плагинов, составленный с учетом особенностей вашего проекта.

Интерфейс

Открытые проекты с заголовочной строкой разного цвета в GoLand

Цветные заголовки проектов в новом интерфейсе

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

Цвета заголовков определены заранее, но вы можете настроить их, как вам нравится. Чтобы задать цвет для проекта, кликните правой кнопкой мыши по заголовку окна, зайдите в контекстное меню, а затем выберите опцию Change Toolbar Color и укажите желаемый цвет. Чтобы отключить эту функцию, просто снимите флажок с опции Show Project Gradient в контекстном меню.

Светлая тема со светлыми заголовками в GoLand

Светлая тема со светлыми заголовками в новом интерфейсе

Мы усовершенствовали светлую тему, добавив альтернативный вариант Light with Light Header. В нем заголовки окон, всплывающие подсказки и уведомления тоже светлые.

Обновленный интерфейс окна Services в GoLand

Обновленный виджет Run/Debug в окне Services

Мы переработали интерфейс для действий запуска и отладки в окне Services, чтобы привести внешний вид этой панели инструментов в соответствие виджету Run/Debug на главной панели IDE.

GoLand без нативной заголовочной строки Linux

Отсутствие строки заголовка на Linux в новом интерфейсе

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

HTTP-клиент

Автодополнение Swagger-схемы в HTTP-клиенте

Поддержка схем Swagger и OpenAPI

HTTP-клиент теперь понимает спецификации Swagger и OpenAPI и предоставляет подходящие варианты автодополнения для JSON-запросов.

Импорт JavaScript-кода в HTTP-клиенте

Поддержка импорта JavaScript

Появилась возможность совместного использования общего JavaScript-кода для обработчиков запросов HTTP-клиента через импортируемые модули.

Превью PDF- файла в HTTP-клиенте

Превью PDF- и HTML-файлов в ответах

GoLand теперь показывает превью PDF- и HTML-файлов прямо в результатах запроса в HTTP-клиенте.

gRPC-запрос с использованием TLS в HTTP-клиенте

gRPC-запросы с использованием TLS в HTTP-клиенте

Теперь в HTTP-клиенте можно отправлять gRPC-запросы с использованием протокола Transport Layer Security (TLS). Он обеспечивает шифрование и аутентификацию, гарантируя конфиденциальность и целостность передаваемых данных. В синтаксисе запроса поддерживаются схемы https:// и grpcs://.

Веб-разработка

Улучшенное форматирование ошибок в TypeScript

Улучшенное форматирование ошибок

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

Инспекция для исправления вложенного CSS-кода в GoLand

Поддержка вложенности CSS

GoLand теперь поддерживает модуль вложенности CSS. Мы добавили поддержку синтаксиса и инспекцию для проверки того, что вложенный селектор не начинается с идентификатора или функциональной нотации.

Другие возможности

Подсветка строки NO в YAML-документе

Инспекция для предотвращения «проблемы с Норвегией» в YAML-файлах

В GoLand появилась новая инспекция для устранения так называемой проблемы с Норвегией и предотвращения непреднамеренной ошибочной интерпретации логических значений в YAML-файлах.

Если список состоит в основном из строк, но содержит литерал, похожий на логическое значение, GoLand подсветит такой литерал, указывая на потенциальное несоответствие, и предложит добавить к нему кавычки. Если же список состоит в основном из литералов, подобных логическим (таких как true, false, off, on, yes и no), то любой литерал, отклоняющийся от этого шаблона, будет подсвечен как возможная ошибка, но никаких быстрых исправлений в этом сценарии не предлагается.

Переработанный диалог Edit Swagger Codegen Configuration в GoLand

Улучшения для Swagger Codegen

Настраивать конфигурации Swagger Codegen стало удобнее. Мы переработали диалог Edit Swagger Codegen Configuration, чтобы вам было проще настраивать конфигурации запуска под ваши потребности.

Запуск конфигурации Swagger Codegen в GoLand

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

Превью Redoc в GoLand

Превью Redoc UI для файлов OpenAPI и Swagger

GoLand теперь поддерживает превью Redoc UI для файлов спецификаций OpenAPI и Swagger, включая файлы YAML и JSON, и можно переключаться между интерфейсами Redoc и Swagger внутри IDE. Благодаря интеграции с Redocly у вас есть доступ к консоли Try it прямо из GoLand, и вы можете использовать ее для установки параметров и отправки запросов к API.

Панель Editor Preview с конечными точками для схемы AsyncAPI

Поддержка редактирования файлов AsyncAPI

Работать с форматом спецификации AsyncAPI стало удобнее. IDE поддерживает проверку схем и предоставляет автодополнение ссылок, окно Endpoints и панель Editor Preview.

LSP API для разработчиков плагинов

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