Что нового в GoLand

В GoLand 2021.3 мы добавили полную поддержку Go-проектов в WSL, рефакторинг Inline для функций и методов, а также поддержку удаленной разработки в режиме Beta.

Начиная с этой версии gofmt запускается при сохранении по умолчанию. В GoLand 2021.3 вы найдете улучшения отладчика, такие как Delve для ARM64, и опцию Show Types.

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

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

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

Поддержка WSL

Создаем новый проект в WSL и выбираем Go SDK в WSL

Теперь вы можете работать с проектами в WSL с помощью SDK, загруженного в WSL.

Когда вы создаете новый проект (или открываете уже существующий) в WSL, GoLand сообщает, что для таких проектов необходимо использовать SDK в WSL. Вы можете загрузить Go SDK или выбрать уже загруженный SDK в директории \\wsl$.

Форматирование

Код форматируется при сохранении файла

gofmt при сохранении

Опция Reformat code, которая позволяет запускать gofmt и встроенный форматтер GoLand при сохранении файла, теперь включена по умолчанию.

Всплывающее окно показывает уведомление о том, что код форматируется при сохранении файла

Это изменение может оказаться неожиданным для некоторых пользователей, поэтому мы добавили уведомление, которое будет показываться один раз в каждом проекте. Вы можете отключить его, нажав Don’t show again.

Или нажмите Edit actions on save, и IDE откроет Settings | Tools | Actions on save, где вы можете изменить настройки.

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

Inline Function и Inline Method

В этой версии мы добавили рефакторинг Inline для функций и методов. Чтобы попробовать новый рефакторинг, поставьте курсор на функцию, метод или вызов и нажмите Ctrl + Alt + N.

Когда вы вызываете рефакторинг Inline, открывается окно с несколькими опциями. Из этого окна можно открыть Refactoring Preview, который помогает найти все вызовы функции или метода.

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

GoLand предлагает разные стили написания составных слов для тегов структур

Улучшенное автодополнение для тегов в структурах

Мы улучшили автодополнение для разных стилей написания составных слов – camelCase, snake_case и т. д. – в тегах структур.

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

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

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

Новые шаблоны для преобразований строк в числа

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

Show usages

Предпросмотр исходного кода при использовании опции Show Usages

Предпросмотр исходного кода

Мы улучшили опцию Show Usages – теперь вы можете включить предпросмотр исходного кода для обнаруженного использования, нажав на квадратную иконку.

Run targets

Настройки для конфигурации папок на удаленной машине

Названия папок для исходных и исполняемых файлов

Вы можете придумать названия для папок на удаленной машине, где хранятся исходные и исполняемые файлы проекта. Для этого перейдите в Run | Manage targets | Additional Settings.

Настройка Project default target

Run target по умолчанию для всего проекта

В этой версии GoLand мы добавили возможность настроить конфигурацию run target, которая будет использоваться по умолчанию для всего проекта. Перейдите в Run | Manage targets. Откроется окно с настройкой Project default target. Если вы выберете здесь какую-либо run target, она будет использоваться для создания всех новых конфигураций запуска.

Настройки прокси в SSH Configurations

Поддержка прокси для подключений по SSH

Мы добавили в настройки SSH Configurations новую секцию HTTP/SOCKS Proxy, где вы можете настроить прокси. Новую секцию можно найти в Settings | Tools | SSH Configurations. Или из открытого проекта нажмите Run | Manage Targets | ...

Отладчик

Как показываются нулевые интерфейсы в отладчике

Улучшенное представление нулевых интерфейсов

У интерфейсов в Go есть две составляющие: тип и значение. Интерфейс может быть равен nil только тогда, когда обе составляющие равны nil.

Если у вас в программе есть интерфейс, значение которого равно нулевому указателю на int, то сам интерфейс не будет нулевым, потому что внутренний тип не равен nil (а равен *int). Это может сбить вас с толку.

Чтобы распознавать такие случаи, мы изменили способ отображения интерфейсов во вкладке Variables окна Debug. Например, если у вас есть интерфейс с внутренним типом *int и значением nil, он будет показан так: {interface{}|*int} *int(nil).

Разница способов отображения имен пакетов в отладчике в версиях 2021.2 и 2021.3

Сокращенные названия пакетов во вкладке Variables

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

Как работает Show Types

Спрятать/показать типы объектов

Если тип объекта занимает слишком много места во вкладке Variables, кликните правой кнопкой мыши в окне и отключите опцию Show Types в появившемся контекстном меню. Вы можете включить опцию тем же способом.

Delve для ARM64 теперь включен в GoLand

Delve для Linux ARM64

Начиная с этой версии GoLand включает версию Delve для ARM64, и отладка на Linux ARM работает «из коробки».

Также мы улучшили сообщения об ошибках, когда GoLand не включает версию Delve для какой-либо архитектуры. Теперь IDE явно сообщает, в чем проблема.

Тестирование

GoLand генерирует код с утверждениями testify

Шаблон для утверждений testify

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

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

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

Форматирование сообщений об ошибках

GoLand now has a quick-fix for an inspection that warns you about incorrect formatting of error strings: “Error strings should not be capitalized or end with punctuation”. Нажмите Alt + Enter, и GoLand предложит исправить форматирование сообщения.

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

Быстрое исправление Export type

Если у вас есть экспортированная функция, которая возвращает неэкспортированный тип, GoLand предложит быстрое исправление для экспорта этого типа.

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

Всплывающее окно показывает информацию о context.TODO()

Инспекция context.TODO()

Мы добавили инспекцию, которая подсвечивает использования context.TODO(). Вы можете включить ее в Settings | Editor | Inspections. Эта инспекция будет служить напоминанием о том, что необходимо изменить context.TODO(), если во время написания кода было непонятно, какой контекст лучше использовать.

Комментарий TODO добавляется при использовании действия Implement Methods

Комментарий //TODO implement me

Мы добавили комментарий //TODO implement me в шаблоны, которые генерируются, когда вы используете действие Implement Methods. GoLand подсвечивает, индексирует и показывает эти специальные комментарии в окне TODO, и в результате они могут служить напоминанием о нереализованных методах.

Удаленная разработка

Опция Remote Development на начальном экране GoLand

GoLand теперь поддерживает удаленную разработку в режиме Beta.

Вы можете попробовать новую функциональность Remote Development прямо на приветственном экране GoLand. Или можете использовать JetBrains Gateway, наше новое приложение, которое будет служить точкой входа для ваших удаленных машин.

Инструкции для начала работы с удаленной разработкой можно найти на этой странице.

HTTP-клиент

Добавление gRPC-запроса в файл http

Поддержка gRPC

HTTP-клиент в GoLand начал поддерживать gRPC-запросы – для них работает автодополнение. Начните запрос с ключевого слова GRPC, и HTTP-клиент будет работать с ним как с gRPC-запросом.

gRPC-запрос генерируется при нажатии на иконку в поле редактора в файле proto

Вы можете сгенерировать gRPC-запрос в HTTP-клиенте, кликнув на иконку в поле редактора в файле .proto.

Исполнение серверного потокового вызова

Сейчас HTTP-клиент поддерживает унарные и серверные потоковые вызовы RPC. Как и в случае с обычными HTTP-запросами, тело запроса и ответ представляют собой файлы JSON.

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

Система контроля версий

Исполнение действия Checkout and Rebase onto Current

Checkout and Rebase onto Current для удаленных веток

Функция Checkout and Rebase onto Current позволяет извлечь выбранную ветку и переместить ее на вершину ветки, в которой вы находитесь. Теперь это действие доступно для удаленных веток.

Исполнение действия Push All up to Here

Новое действие Push All up to Here

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

Теперь вы можете отправить в удаленный репозиторий все коммиты вплоть до коммита, выбранного во вкладке Log окна Git. Для этого выберите коммит, на котором вы хотите остановиться, кликните по нему правой кнопкой мыши, чтобы вызвать контекстное меню, и выберите Push All up to Here.

Настройки системы контроля версий

Реорганизация настроек

Настройки системы контроля версий теперь легче найти и они лучше структурированы. Узел Version Control в Settings содержит все необходимые настройки.

Улучшения пользовательского интерфейса

Evaluate expression во вкладке Variables

Evaluate expression во вкладке Variables

Функциональность Evaluate expression теперь доступна во вкладке Variables отладчика.

Разделение окна Run

Разделение окна Run

Теперь можно разделять окно Run, перетаскивая вкладки в подсвеченную область. Чтобы объединить вкладки, кликните правой кнопкой мыши по верхней части панели и выберите Unsplit из контекстного меню.

Использование окна Bookmarks

Новое окно Bookmarks

У нас появилось окно Bookmarks. Отныне все файлы и папки, которые вы помечаете как важные с помощью клавиши F11, будут показаны в этом окне.

Профилировщик

Сравнение снапшотов и визуализация результатов

Визуализируйте сравнение снапшотов

Вы можете визуализировать сравнение двух снапшотов на флейм-графе. Нажмите Shift дважды и напечатайте «Open Profiler Snapshots» в поисковой строке. Откройте снапшот из списка, повторите эти действия и откройте еще один.

Затем нажмите на кнопку Compare With Baseline, находясь во вкладке одного из снапшотов. Из меню выберите снапшот, с которым хотите сравнить. Откроется вкладка Diff, в которой вы увидите результаты сравнения.

Терминал

Демонстрация поддержки 24-битного цвета в терминале на Windows

ConPTY

GoLand’s terminal supports the new ConPTY API on Windows. We addressed several problems users were having with the old implementation, which was based on winpty, and enabled PTY on Windows by default.

Благодаря ConPTY в терминале теперь поддерживается 24-битный цвет.

GoLand показывает символы, которые собирается вводить пользователь

Опережающий ввод

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

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

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

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

Поддержка URL-адресов в инструкциях import

Вы можете загрузить модуль ES6, поставив курсор на URL-адрес в инструкции import и вызвав быстрое исправление. Модуль будет загружен вместе со всеми зависимостями. Чтобы попробовать, поставьте курсор на Url, нажмите Alt + Enter и выберите Download module.

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

Улучшенное автодополнение кода для HTML

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

Раньше нужно было сначала ввести открывающую угловую скобку (<). Кроме того, мы улучшили автодополнение для мнемоников.

Обновление пакета npm с помощью быстрого исправления

Новая инспекция для обновления зависимостей

Теперь обновить npm-пакеты до новой версии можно прямо из редактора. Откройте файл package.json, установите курсор на версию пакета, который нужно обновить, нажмите Alt+Enter и выберите Update ‘имя пакета’ to the latest version.

Преобразование однострочного списка элементов в многострочный и обратно

Преобразование списка элементов

У GoLand появилось действие для фронтенд-проектов, которое позволяет быстро расставить разделенные запятыми элементы на отдельные строки и, если требуется, обратно на одну строку.

Базы данных

Как работает Aggregate view для диапазона ячеек

Aggregate view для диапазона ячеек

Мы добавили возможность показывать Aggregate view для диапазона ячеек. Выберите диапазон ячеек, к которому вы хотите применить агрегатные функции, кликните по нему правой кнопкой мыши и выберите Show Aggregate View. Значение одной из агрегатных функций будет показано в строке состояния, и вы можете выбрать, какая это будет функция.

Разделение окна редактора

Независимые вкладки в редакторе

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

Новая инспекция проверяет, является ли выражением логическим

Проверка логических выражений

У нас появилась инспекция для логических выражений в командах WHERE и HAVING.

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

Проверка работает для баз данных ClickHouse, Couchbase, Db2, H2, Hive/Spark, MySQL/MariaDB, Redshift, SQLite и Vertica. Для других баз данных такие выражения будут подсвечены как ошибки.

Переход от выбранных ячеек к связанным данным

Навигация по внешним ключам на основе нескольких значений

Теперь редактор данных позволяет выбрать сразу несколько значений и перейти к соответствующим данным.

Тип данных в колонке в CSV-файле показывается во всплывающем окне

Автоматическое определение столбцов в CSV-файлах

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

Автодополнение кода при фильтрации данных в MongoDB

MongoDB: Автодополнение для filter {} и sort {}

Теперь при фильтрации данных в коллекциях MongoDB можно пользоваться автодополнением.

Разные шрифты в редакторе данных и в других окнах IDE

Настройка шрифта в редакторе данных

Вы можете настроить отдельный шрифт для редактора данных. Чтобы выбрать шрифт, перейдите в Settings | Tools | Database | Data views | Use custom font.

Обновления режима специальных возможностей

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

Поддержка режима специальных возможностей на macOS также была улучшена. Мы исправили несколько неполадок, связанных с VoiceOver, а также теперь можно создавать проекты с помощью инструмента чтения с экрана. Мы убрали некоторые подсказки со звуком, чтобы снизить количество отвлекающих факторов.