Что нового в GoLand

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

Мы интегрировали Go Playground, поддержали новый синтаксис документирующих комментариев, добавили улучшения для HTTP-клиента и Docker, а также сделали общедоступным новый интерфейс.

Как и всегда, вас также ждут нововведения для веб-разработки и работы с базами данных — например, поддержка Redis.

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

А еще GoLand сегодня исполняется 5 лет, и мы подготовили для вас небольшой сюрприз. Введите «Happy B-day, GoLand!» в GoLand 2022.3 или GoLand 2022.2.5 и посмотрите, что будет.

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

Окно Background Tasks показывает выполнение индексирования и go list

Изменения в go list для улучшения индексирования

When you open a project, GoLand indexes the files and runs the go list command, which reports information about the project structure. Во время выполнения этой команды индексирование приостанавливается, и у вас нет доступа к возможностям анализа кода до завершения индексирования.

Раньше в некоторых случаях go list запускалась дважды. Мы изменили API и сократили количество запусков go list. Надеемся, это изменение значительно повысит производительность при работе над крупными проектами с большим количеством модулей.

Восстановление структуры проекта из кэша при открытии

Теперь при открытии проекта информация, получаемая от go list, сохраняется на диске в кэш-памяти. Когда вы откроете этот проект в следующий раз, данные о структуре проекта загрузятся из памяти и будут учтены на старте индексирования.

Благодаря этому индексирование выполняется без остановки и завершается быстрее, а функции анализа кода становятся доступны гораздо раньше.

Ускоренный запуск IDE и открытие проектов

В этой версии вас ждет еще несколько оптимизаций производительности, призванных сократить время запуска приложений и открытия проектов в IDE.

В результате общая производительность запуска, включая восстановление редактора, повысилась примерно на 30%.

Дженерики

Генерация теста для обобщенной функции

Генерация тестов для обобщенных функций

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

Быстрое исправление для удаления параметров типа с пустыми списками параметров

Исправление строчных букв в параметрах типа

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

Рабочие пространства

Использование действия Go Workspace File

Действие Go Workspace File

В контекстном меню New появилось действие Go Workspace File. При его выборе в корневой папке появится файл go.work. В него будут автоматически добавлены существующие Go-модули.

Генерация go.work с помощью директив replace

Генерация go.work с помощью директив replace

Теперь можно генерировать go.work из go.mod, если там есть директивы replace. Установите курсор внутри директивы replace, нажмите Alt+Enter и выберите быстрое исправление Add … module to workspace.

Документирующие комментарии Go

В Go 1.19 была добавлена поддержка ссылок, списков и новых заголовков в документирующих комментариях. GoLand 2022.3 тоже поддерживает эти новые возможности.

Текстовые и doc-ссылки отображаются во всплывающем окне Quick Documentation и в окне Documentation

Поддержка ссылок

GoLand теперь поддерживает doc-ссылки. Щелчок по ссылке приведет к элементу, на который она ссылается, а щелчок по текстовой ссылке — к определению текстовой ссылки.

И те и другие отображаются в виде ссылок в подсказке Quick Documentation и в окне Documentation.

Новые заголовки отображаются в окне Documentation

Поддержка новых заголовков

Начиная с Go 1.19, заголовок — это строка, начинающаяся со знака #, за которым следует пробел и текст заголовка.

Новые заголовки отображаются как HTML-заголовки и в Quick Documentation, и в окне Documentation.

Списки отображаются в окне Documentation

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

Во всплывающем окне Quick Documentation и в окне Documentation списки отображаются в виде HTML-списков.

Интегрированная Go Playground

Использование Go Playground в GoLand

Мы интегрировали в GoLand функциональность Go Playground.

Выделите фрагмент кода, выберите опцию Open In и нажмите Playground. В результате откроется скретч-файл с панелью инструментов, содержащей те же опции, что и при использовании Go Playground.

Вы можете отформатировать свой код и поделиться им, изменить версию Go, запустить код на сервере Go Playground или локально.

Новые быстрые исправления

Использование быстрого исправления для превращения типа в указатель

Быстрое исправление недопустимого рекурсивного типа

Если тип содержит сам себя, IDE выдает ошибку «Invalid recursive type». To avoid this, you should include a pointer to a type, not a type itself. Теперь для таких случаев есть быстрое исправление.

Редактор

Имя автора кода показывается в редакторе

Code Vision

Мы начали реализовывать функцию Code Vision. Пока что авторы кода отображаются, если включена интеграция с системой контроля версий. Если кликнуть по имени автора кода, откроется боковая панель Annotate with Git blame, показывающая, кто внес те или иные изменения.

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

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

Встроенные подсказки для определений констант отображаются в редакторе

Встроенные подсказки для определений констант

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

Автогенерируемые поля protobuf игнорируются после вызова действия Fill all fields

Автогенерируемые поля protobuf игнорируются при заполнении всех полей

IDE теперь игнорирует автоматически сгенерированные поля protobuf, начинающиеся с XXX_, при вызове действия Fill all fields. Эти поля отображаются только после того, как вы вызовете автодополнение второй раз.

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

Переменные окружения Go отображаются в настройках

Переменные окружения Go отображаются в настройках

GoLand теперь автоматически подхватывает системные переменные, связанные с Go-модулями, и отображает их в диалоге Environment variables. Чтобы открыть диалог, перейдите в Settings | Go | Go Modules и нажмите на значок Edit environment variables.

Имена пакетов отображаются в Quick Documentation

Имена пакетов всегда отображаются в быстрой документации

Теперь IDE всегда показывает имена пакетов во всплывающем окне Quick documentation для объявлений верхнего уровня. Раньше заголовки пакетов показывались только при обнаружении файлов doc.go или <pkg_name>.go.

Увеличение лимита на размер файла

Максимально допустимый размер файла увеличился с 2,5 до 10 МБ. Если файл больше 10 МБ, функции анализа кода, такие как подсветка синтаксиса и навигация, не работают.

В большинстве случаев ограничения в 2,5 МБ было достаточно, но есть проекты с файлами большего размера, например AWS SDK и GCP.

Инспекция Receiver names are different игнорирует сгенерированный код

Поскольку инспекция Receiver names are different не актуальна для сгенерированного кода, мы отключили ее для файлов, которые содержат комментарий, соответствующий следующему регулярному выражению: ^// Code generated .* DO NOT EDIT\.$

HTTP-клиент

Написание блока скрипта в HTTP-клиенте

Выполнение скриптов перед запросами и новые API для JavaScript-обработчиков

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

Вычисление хэш-значений md5 или sha1 для HTTP-запросов

HTTP-клиент теперь поддерживает Crypto API. Вы можете вычислять хэш-значения md5 или sha1 для HTTP-запросов.

Использование случайных значений в HTTP-запросах

Для простых случаев в IDE появился новый набор переменных random.

Docker

Настройки Docker в GoLand под Windows

Подключение к Docker в WSL без Docker Desktop

GoLand теперь поддерживает подключение к Docker, запущенному в Windows Subsystem for Linux (WSL). Настроить такое соединение можно в разделе Settings | Build, Execution, Deployment | Docker.

Использование быстрого исправления для извлечения образа

Новое действие Pull Docker image

Теперь есть простой способ извлечь необходимый образ из Dockerfile или docker-compose.yml, не запуская его. Для этого вызовите контекстное меню (Alt+Enter) на подсвеченном имени образа и выберите Pull Docker image.

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

Поддержка файлов .dockerignore

Мы добавили полную поддержку файлов .dockerignore, включая подсветку и автодополнение кода. Теперь эти файлы учитываются при сборке образа из IDE.

Синтаксис heredoc подсвечивается в GoLand

Поддержка формата heredoc в файлах Dockerfile

Here-документы позволяют перенаправлять последующие строки Dockerfile в качестве входных данных для команд RUN и COPY. GoLand теперь поддерживает этот синтаксис, и вы можете использовать его для создания файлов конфигурации или многострочных скриптов прямо в файлах Dockerfile.

Настройка дополнительных Docker-соединений с помощью Docker Contexts

Docker-соединения из Docker Contexts

Теперь можно настраивать дополнительные Docker-соединения с помощью Docker Contexts, если у вас уже есть эти параметры в конфигурации Docker. Для этого в окне Services вызовите контекстное меню Add Service и выберите Docker Connections From Docker Contexts.

Удаленная разработка (бета-версия)

Раздел Remote Development на начальном экране GoLand

Теперь бэкенд вашей IDE может запускаться непосредственно в WSL 2, и к нему можно подключаться так же, как и к любой другой удаленной машине при использовании удаленной разработки в GoLand.

Интерфейс

Раздел New UI Preview в настройках

Новый интерфейс

Как вы, возможно, знаете, в мае мы открыли ограниченный ранний доступ к новому интерфейсу в наших IDE.

Теперь новый интерфейс может попробовать каждый: переключайтесь на него в меню Settings | Appearance & Behavior | New UI Preview и делитесь с нами своими впечатлениями.

Предварительный просмотр результатов intention-действий

Предпросмотр intention-действий включен по умолчанию

Функция предварительного просмотра intention-действий теперь включена по умолчанию, а значит, вы можете заранее посмотреть, как изменится ваш код после применения предложения IDE.

Функция включается и выключается нажатием Ctrl+Q, когда открыт список intention-действий.

Перетаскивание окна инструментов из главного окна и прикрепление его к плавающей вкладке редактора

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

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

Окно Tips of the Day

Улучшенные подсказки Tips of the Day

Мы улучшили раздел полезных советов, которые помогают осваивать GoLand.

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

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

Обновленные закладки

Снова можно добавлять в закладки файлы, открытые во вкладках редактора. Просто кликните правой кнопкой мыши по вкладке и выберите Bookmarks в контекстном меню.

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

В закладки можно добавить сразу все файлы со всех открытых вкладок. Для этого выберите действие Bookmark Open Tabs в том же контекстном меню или вызовите его, нажав на три точки в правой части панели вкладок.

Раздел Settings Sync в настройках GoLand

Новый способ синхронизации настроек

В этой версии настройки синхронизируются по-новому. Долгое время параллельно существовало два плагина с пересекающимися функциями — IDE Settings Sync и Settings Repository. Чтобы избежать путаницы, мы объединили их функциональность в одном решении — новом плагине Settings Sync.

You can find details about the new unified solution here.

Базы данных

Обо всех новых возможностях для работы с базами данных читайте на странице DataGrip.

Выбор соединения с Redis в окне Database

Поддержка Redis

Мы реализовали предварительную версию долгожданной поддержки Redis.

Фильтрация объектов при использовании быстрого поиска в окне Database

Быстрый фильтр

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

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

Обо всех улучшениях для веб-разработки в версии 2022.3 читайте на странице WebStorm.

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

Code Vision для JavaScript и TypeScript

В этой версии доступна новая функция Code Vision для веб-разработки. Она собирает различные метрики типов и членов типов в JavaScript и TypeScript-коде и отображает эту информацию рядом с их объявлениями.

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

Использование быстрого исправления для подавления инспекций в YAML-файле

Быстрое исправление для подавления инспекций в YAML-файлах

Появилось новое быстрое исправление для подавления инспекций с помощью комментария в YAML-файлах, включая файлы Kubernetes, спецификации OpenAPI и файлы docker-compose.yml.

Мы также добавили возможность сворачивать многострочные комментарии, которые составляют блок из 3 или более строк и начинаются с #.

Установщики для Windows ARM64

Мы начали распространять установщики для Windows ARM64. Их уже можно скачать с нашего сайта или через приложение Toolbox.