Что нового в GoLand

В GoLand 2022.2 вы найдете новую функциональность для дженериков и go.work. Мы также добавили поддержку фаззинг-тестирования.

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

GoLand теперь поддерживает соединения WebSocket и может отправлять запросы GraphQL по протоколам HTTP и WebSocket.

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

Дженерики

Действие, которое заменяет пустые интерфейсы на any

Преобразование пустых интерфейсов в any

В GoLand теперь есть инспекция, которая сообщает об использовании пустого интерфейса в качестве типа или ограничения типа.

Также мы добавили действие, которое заменяет interface{} на any. Вы можете заменить все пустые интерфейсы в файле, выбрав соответствующую строку во всплывающем окне.

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

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

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

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

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

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

Инспекция для обнаружения интерфейсов с методами в объединениях

Обнаружение интерфейсов с методами в объединениях

IDE теперь сообщает об ошибке, если вы пытаетесь использовать интерфейсы с методами в объединениях.

Проверка использования параметра типа в качестве ограничения

Проверка использования параметра типа в качестве ограничения

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

GoLand автоматически добавляет идентификатор параметра типа при создании метода.

Автодополнение для дженериков при указании получателя метода

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

Новая группа в Find Usages

Новая группа в Find Usages для дженериков

Мы добавили в Find Usages новую группу для дженериков: Type parameter declaration.

Фаззинг-тестирование

Запуск фаззинг-тестов

Запуск тестов

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

Ссылка на этот файл появится в консоли. При нажатии на нее файл откроется в IDE, и вы увидите зеленый треугольник в поле вверху файла. Нажмите на него, и GoLand запустит команду go test с последовательностью символов, которая обрушила программу.

From GoLand you can also run fuzz tests just like normal unit tests.

Быстрое исправление для изменения SDK, если текущий SDK не поддерживает фаззинг-тестирование

Быстрое исправление для изменения Go SDK

Если для проекта с фаззинг-тестами вы выбрали Go SDK, который не поддерживает фаззинг, кнопка запуска не будет отображаться. Мы также добавили быстрое исправление для изменения SDK, если текущий SDK не поддерживает фаззинг-тестирование.

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

Быстрое исправление для объединения директив use

Быстрое исправление для объединения директив use

Мы добавили быстрое исправление для объединения нескольких директив use в файле go.work в одну директиву.

Go 1.19

Действия Add a format string argument для Appendf

Поддержка fmt.Appendf

Мы добавили поддержку fmt.Appendf. GoLand распознает глаголы форматирования внутри строк, и функция Appendf получает такую же функциональность, как и другие форматирующие функции — например, действие Add a format string argument.

Поддержка тега сборки unix

GoLand поддерживает новый тег сборки unix, который соответствует Unix и Unix-подобным операционным системам.

Добавление loong64 в список Arch

В Go 1.19 появится новая архитектура – loong64. Мы добавили loong64 в список Arch в Settings | Go | Build Tags & Vendoring.

Быстрый просмотр документации

Мы улучшили функциональность Quick Documentation:

  • Для каждого из 25 ключевых слов Go вы увидите всплывающую подсказку, описывающую его значение.
  • Теперь мы отображаем информацию о направлениях каналов. Подсказки с этими данными показываются в трех местах: когда вы наводите курсор на ключевое слово chan, на операции получения или отправления и на любые ссылки на типы каналов.
  • Quick Documentation для iota теперь содержит дополнительную информацию о том, как пользоваться iota. Если константа является частью группы iota, значение константы отображается в вариантах автодополнения, даже если константа объявлена неявно.
  • Мы также добавили новую всплывающую подсказку с информацией о том, как работает переключатель типов.
 
  • Если вы вызовете Quick Documentation на параметре типа, GoLand покажет всплывающую подсказку с информацией о том, как работают дженерики, и ссылкой на материалы команды Go.
  • Всплывающие подсказки для вывода типов теперь содержат дополнительную информацию с примерами.
  • GoLand показывает дополнительную информацию при инициализации массивов, срезов, структур и map, если вы наведете курсор на область внутри фигурных скобок.
  • При наведении курсора на на пустой идентификатор GoLand покажет всплывающую подсказку с информацией об этом идентификаторе и его использовании.

Больше улучшений, связанных с Go

Улучшение производительности

GoLand больше не сканирует папку cache в ~/go/pkg/mod, так как она не содержит информации, необходимой для правильной работы IDE. Эта папка может быть довольно большой, и ее исключение из процесса сканирования должно улучшить производительность.

Поддержка директивы go:linkname

Мы добавили поддержку директивы go:linkname:

//go:linkname localname [importpath.name]

Эта директива сообщает компилятору, что importpath.name необходимо использовать как имя символа объектного модуля для переменной или функции, объявленной в качестве localname в исходном коде.

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

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

В GoLand появилась новая инспекция, которая предупреждает о нестандартном использовании iota.

Проверка попытки присвоить константе имя iota

Мы также включили инспекцию Reserved word used as name для iota и других встроенных констант. Инспекция сработает, если вы попытаетесь присвоить значение константе с именем iota, true или false.

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

Инспекция для методов и на получателе значения, и на получателе указателя

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

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

Автоматическое распознавание SQL

GoLand распознает команды SQL.

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

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

Вы можете найти уже готовые шаблоны, редактировать их и добавлять свои шаблоны в Settings | Editor | Language Injections.

Run Anything

Действие Run Anything

GoLand теперь поддерживает действие Run Anything, которое позволяет быстро запускать конфигурации запуска/отладки, приложения, скрипты, команды, а также открывать недавние проекты. Чтобы использовать Run Anything, нажмите Ctrl дважды и начните печатать в поисковой строке.

HTTP-клиент

Отправка сообщения через соединение WebSocket

Поддержка конечных точек WebSocket

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

Отправка запроса GraphQL

Поддержка конечных точек GraphQL

Теперь в GoLand можно отправлять запросы по протоколам HTTP и WebSocket — возможность доступна из коробки. Для http:// и https:// используются простые HTTP-запросы, тогда как ws:// и wss:// отправляются через WebSocket.

Выбор среды запуска в HTTP-клиенте

Выбор среды запуска

Теперь можно выбирать среду запуска в HTTP-клиенте, нажав на кнопку запуска в поле. Чтобы включить эту функциональность, выберите опцию Select Environment Before Run в комбинированном списке Run with.

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

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

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

Подробнее об этой новой функциональности для удаленной разработки читайте в нашем блоге.

Space

Мы интегрировали Space в GoLand

JetBrains Space — это универсальная платформа для разработки, которая предоставляет такую функциональность, как управление проектами, отслеживание задач, Git-хостинг, код-ревью, непрерывная интеграция, управление пакетами и оркестрация удаленных серверов с запущенными IDE с помощью облачных сред разработки.

Мы интегрировали Space в GoLand. With this first-class integration, you can browse Space projects and clone repositories, then start working on them directly. Когда ваши изменения готовы, вы можете создать merge-реквест и запустить код-ревью прямо из IDE.

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

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

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

Пользовательский интерфейс

Объединение открытых проектов

Объединение окон на macOS

Для пользователей macOS мы добавили возможность объединять все открытые проекты в одно окно с вкладками. Для этого перейдите в Window | Merge All Project Windows.

Изменение размера шрифта с помощью сочетания клавиш

Сочетание клавиш для изменения размера шрифта

Мы добавили новое сочетание клавиш для изменения размера шрифта в редакторе. Чтобы увеличить шрифт, нажмите Alt+Shift+., а что тобы уменьшить — Alt+Shift+,.

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

Использование поля Description при создании закладки

Добавление описания к мнемоническим закладкам

В диалоге Add Mnemonic Bookmark теперь есть поле Description, где вы можете добавить свое описание закладки. Чтобы создать мнемоническую закладку, кликните правой кнопкой мыши в поле рядом со строчкой, которую вы хотите сохранить, и выберите соответствующую опцию из контекстного меню. Также вы можете использовать комбинацию клавиш Ctrl+F11.

Начальный экран

Индикатор выполнения при клонировании репозитория

Индикатор выполнения Cloning repository теперь показывается прямо в списке проектов.

Всплывающее окно, из которого можно открыть настройки автодополнения кода

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

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

Редактор

Настройки автодополнения кода

Управление автодополнением скобок

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

Настройки с выпадающим меню Highlighting in editor в правом нижнем углу

Изменение подчеркивания для инспекций

Вы можете изменить стиль подчеркивания для инспекций, используя новое выпадающее меню Highlighting in editor в Settings | Editor | Inspections.

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

Docker

Действие Copy Docker Image

Копирование образа

Вы можете копировать образы с одного демона Docker на другой с помощью нового действия Copy Docker Image, которое сохраняет образ в файл и затем добавляет его в выбранный демон.

Автоматическое подключение к Docker при перезапуске IDE

GoLand теперь автоматически подключается к Docker при перезапуске IDE. Эта опция включена по умолчанию в Preferences | Advanced Settings | Docker.

Интеграция с Colima и Rancher

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

Базы данных

Импорт нескольких CSV-файлов

Импорт нескольких CSV-файлов

Теперь можно выбрать сразу несколько CSV-файлов и импортировать их одновременно.

Режимы разрешения Playground и Script

Режимы разрешения

Для работы с базами данных у вас теперь будет два режима разрешения: Playground и Script.

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

Другие улучшения

Импорт доверенных SSL-сертификатов

GoLand теперь умеет автоматически импортировать SSL-сертификаты из доверенных системных хранилищ. IDE сама обнаружит пользовательские сертификаты, используемые в вашей корпоративной среде разработки. Вам не нужно ничего делать дополнительно — все работает из коробки.

Активные ссылки в файлах JSON и YAML

Файлы JSON и YAML теперь содержат активные ссылки внутри значений, начинающихся с http:// и https://. Вы можете открывать эти ссылки в браузере и генерировать запросы в HTTP-клиенте.