Что нового в GoLand

В GoLand 2023.1 вас ждет инструмент проверки на уязвимости, улучшенная навигация по gRPC-коду и рефакторинг Rename для общих ресиверов.

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

Кроме того, мы усовершенствовали новый интерфейс, добавили обновления для Docker и Kubernetes и улучшения для веб-разработки.

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

Проверка на уязвимости

GoLand подсвечивает пакет с известными уязвимостями в go.mod

Подсветка уязвимых пакетов

GoLand теперь подсвечивает пакеты с известными уязвимостями в go.mod. Наведите курсор на подсвеченный код или нажмите Alt+Enter, выберите опцию Show vulnerability info for ..., и GoLand покажет список уязвимостей со ссылками на подробное описание. Данные об уязвимостях предоставлены компанией Checkmarx, специализирующейся на безопасности программного обеспечения.

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

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

Чтобы обновить зависимость до версии, не содержащей уязвимостей, поместите курсор на подсвеченный пакет в go.mod, нажмите Alt+Enter и выберите быстрое исправление Change package-name version to v0.x.x.

GoLand подсвечивает вызовы методов из пакета с известными уязвимостями

Подсветка вызовов методов из уязвимых пакетов

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

Новое окно Dependency Checker

Окно Dependency Checker

В него можно попасть через меню: Code | Analyze Code | Show Vulnerable Dependencies.

Навигация по gRPC-коду

Навигация между файловыми службами .proto и их реализациями в коде Go с помощью значков на полях

HTTP-клиент GoLand поддерживает выполнение запросов gRPC. Вы также можете их выполнять из окна Endpoints.

В этой версии вас ждет еще одно полезное дополнение к набору функций gRPC. Теперь можно переходить к объявлениям сообщений, сервисов и методов из кода Go и их реализации в Go из файлов .proto.

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

Черновики

Запуск кода с нестандартными библиотечными зависимостями в скретч-файле

Запуск скретч-файлов с пакетами из нестандартных библиотек

Теперь вы можете запускать скретч-файлы с нестандартными библиотечными зависимостями Go. Когда вы копируете код из файла проекта в скретч-файл и нажимаете кнопку Run, GoLand создает конфигурацию запуска с флагом -overlay. Этот флаг используется с файлом JSON, который сопоставляет пути к файлам go.mod и go.sum в исходном проекте.

Дженерики

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

Рефакторинг Rename для общих ресиверов

Когда вы переименовываете параметр типа в структуре, рефакторинг Rename теперь предлагает соответствующим образом изменить ресиверы.

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

Intention-действия и быстрые исправления

Использование intention-действия для преобразования строковых литералов

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

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

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

Упрощенное преобразование целых чисел в строки

Раньше, если нужно было преобразовать целое число в строку, IDE сначала предлагала быстрое исправление Convert to 'string'. Чтобы правильно завершить преобразование, требовалось еще одно быстрое исправление — Convert integer to string using strconv.Itoa() call.

Мы упростили этот процесс, и теперь GoLand сразу же предлагает быстрое исправление Convert integer to string using strconv.Itoa() call.

Использование действия Implement interface для неэкспортированных интерфейсов

Возможность реализации неэкспортированных интерфейсов

Действие Implement interface теперь работает для неэкспортированных интерфейсов.

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

Удаление начальных пробелов из директив Go

В GoLand теперь есть инспекция и быстрое исправление, которые помогут вам обнаружить и удалить начальные пробелы в директивах Go, например в //go:embed.

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

Предварительный просмотр: больше поддерживаемых действий и быстрых исправления

Начиная с предыдущей версии, превью результатов intention-действий включено по умолчанию.

Эта функция позволяет заранее увидеть, как изменится ваш код, если применить предложение IDE.

Теперь она доступна для более широкого набора действий и быстрых исправлений: Introduce local variable, Create variable/global variable, Create constant/global constant, Create field, Merge declaration up, Delete all unused parameters, Create function, Create method, Fill all fields.

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

Умное сканирование файлов для индексации

Мы улучшили работу IDE при запуске, переведя процесс Scanning files to index... в интеллектуальный режим. В результате вы получаете доступ ко всей функциональности GoLand гораздо быстрее. Теперь при открытии проекта GoLand использует существующие кэши проекта из предыдущей сессии и параллельно ищет новые файлы для индексации. Если при сканировании никаких изменений не обнаружится, IDE будет готова к работе сразу же — без задержек, связанных с ожиданием завершения процесса индексации.

Предложение изменить настройки Microsoft Defender

GoLand покажет новое уведомление, если у вас включен Microsoft Defender с функцией Real-Time Protection. Поскольку антивирусные проверки могут значительно снизить скорость работы IDE, GoLand предлагает добавить отдельные папки в список исключений Defender. Параметры можно изменить автоматически или сначала проверить инструкции по настройке Defender и сделать это вручную.

Редактор

Количество реализаций интерфейса отображается в редакторе

Code Vision: реализации интерфейсов

Мы обновили функцию Code Vision. Теперь GoLand показывает количество реализаций интерфейса и спецификации его методов.

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

Создание пользовательской инспекции на основе регулярного выражения

Пользовательские инспекции на основе регулярных выражений

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

Перейдите в раздел Settings | Editor | Inspections и нажмите значок +. Выберите в списке Add RegExp Search Inspection, чтобы открыть диалог, в котором можно настроить новую инспекцию. Выберите нужный язык, используйте подсказки из панели слева для построения регулярного выражения и укажите желаемую замену. Вы также можете указать, как следует подсвечивать их в проекте.

Улучшенная ссылка на Go Playground отображается в GoLand

Go Playground: параметр версии в общем URL

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

В этом релизе мы улучшили эту функцию. Прежде всего, общие URL теперь включают параметр версии, если вы выбрали версию dev или предыдущую версию.

Мы также добавили возможность отключить всплывающее окно, которое запрашивает разрешение на обмен кодом в Playground. Для этого перейдите в настройки: Settings | Go | Ask before sharing in Go Playground.

Настройка, позволяющая выбрать, как именно выполнять вставку

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

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

В меню Settings | Advanced Settings найдите раздел Editor и выберите желаемое поведение для действия Paste из выпадающего списка.

Пробелы отображаются в виде точек при выделении кода

Отображение знаков пробела только в выделенном коде

В разделе Settings | Editor | General | Appearance | Show Whitespace появился новый флажок Selection, который позволяет настроить IDE так, чтобы пробелы отображались в виде маленьких точек только при выделении кода.

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

Отключение проверки орфографии для хешей и специальных значений

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

  • шестнадцатеричные значения Md5, Sha1 и Sha256;
  • закодированные в формате Base64 значения Sha384 и Sha512 с префиксом shaNNN–;
  • токены JWT.
Новая группа Call отображается в окне Find usages

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

В Find Usages появилась новая группа Call для вызовов функций.

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

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

Использование масштабирования в GoLand для увеличения всех элементов интерфейса

Изменение масштаба всей IDE

Теперь в GoLand можно увеличивать и уменьшать размер всех элементов интерфейса одновременно. Для этого выберите View | Appearance | Switch Zoom IDE в главном меню и настройте нужный масштаб.

Настройка Remember size for each tool window отображается в разделе Appearance

Возможность зафиксировать размер окон инструментов

Мы добавили новую опцию, которая позволяет зафиксировать ширину боковых окон инструментов или сохранить возможность их менять. В разделе Settings | Appearance | Appearance & Behavior | Tool Windows вы найдете новую опцию Remember size for each tool window.

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

Организация окон и сохранение макетов

Возможность сохранять варианты расположения окон

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

Чтобы сохранить макет, разместите окна, как вам нравится, и перейдите в Window | Layouts | Save Current Layout as New. Если вы захотите поменять что-то еще, можно обновить текущий вариант с помощью опции Save Changes in Current Layout или сохранить изменения как новый отдельный макет. Для активации сохраненного варианта размещения окон найдите его в списке Window | Layouts, наведите на него курсор и нажмите Apply.

Эти настройки позволяют задать поведение Actions on Save

Возможность настройки Actions on Save для новых проектов

В этой версии можно задать поведение Actions on Save для новых проектов.

Для этого перейдите в раздел File | New Projects Setup | Preferences For New Projects | Tools | Actions on Save и выберите, какие действия должны выполняться при сохранении изменений в проектах.

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

В прошлом году мы представили новый, более минималистичный интерфейс GoLand и других наших IDE. Мы дорабатываем его с учетом ваших отзывов и пожеланий. Читайте об основных изменениях, вошедших в этот релиз. Чтобы попробовать новый интерфейс, поставьте галочку напротив New UI в разделе Settings | Appearance & Behavior.

Подробнее о новом интерфейсе читайте на этой странице.

Переключение в компактный режим

Компактный режим

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

Чтобы включить компактный режим, войдите в меню View и выберите Appearance | Compact Mode.

Кроме того, в режимах Zen и Distraction Free теперь скрыта верхняя панель инструментов.

Вертикальное разделение окон инструментов

Разделение окон инструментов по вертикали

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

Чтобы добавить окно в эту область и разместить его в нижней части, перетащите значок окна вниз по боковой панели и опустите под разделитель. Можно сделать и по-другому: кликните правой кнопкой по значку и в открывшемся меню выберите новое положение окна с помощью действия Move to.

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

Вкладки проектов на macOS

Если у вас открыто несколько проектов, теперь можно легко переключаться между ними с помощью вкладок, расположенных под главной панелью инструментов. Для этого перейдите в Window | Merge All Project Windows.

Вкладки перечислены в выпадающем списке

Список скрытых вкладок

Мы добавили в новый интерфейс опцию Show Hidden Tabs. На панели вкладок теперь есть выпадающий список: в нем перечислены открытые вкладки, которые были скрыты.

Отображаются имена файлов

Отображение имени файла при скрытых вкладках

Мы усовершенствовали новый интерфейс: теперь когда вкладки редактора скрыты, вы можете видеть имя открытого файла.

Переработанный виджет Run в редакторе

Переработанный виджет запуска

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

Docker

Использование автодополнения для имени контейнера в коде testcontainers

Автодополнение для testcontainers

В этой версии мы добавили автодополнение для имен контейнеров при использовании пакета testcontainers-go.

После ввода имени контейнера можно использовать действие Pull Docker image, которое мы реализовали ранее.

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

Объединение журналов всех контейнеров Docker Compose

Журналы всех контейнеров Docker Compose теперь собраны в одном месте — на вкладке Dashboard в узле Docker-сompose, где они обновляются в реальном времени.

Настройки подключения к Azure Registry отображаются в IDE

Поддержка реестра контейнеров Azure

Теперь можно легко подключиться к реестру контейнеров Azure. Для этого перейдите в Settings | Build, Execution, Deployment | Docker | Docker Registry и выберите опцию Docker V2 в поле Registry.

Настройки для применения параметра монтирования :z для привязки томов на SELinux

Новая настройка для применения параметра монтирования :z для привязки томов на SELinux

Теперь у вас есть возможность добавлять флаги конфигурации :z при монтировании каталога с хоста, что позволяет подключать тома к Docker-контейнерам на устройствах SELinux. Чтобы включить эту функцию, перейдите в раздел Settings | Advanced Settings | Docker.

Kubernetes

Создание ресурса Kubernetes

Шаблоны файлов в окне New Kubernetes Resource

Чтобы вам было проще создавать файлы Kubernetes, мы добавили новое действие Kubernetes Resource в меню New, которое открывается при нажатии правой кнопкой мыши в окне Project.

Когда вы выбираете опцию Kubernetes Resource, открывается список наиболее популярных типов ресурсов, таких как Pod, Deployment, ConfigMap и т. п.

Добавление нового секрета Kubernetes

Действие для создания секретов Kubernetes

В GoLand появился новый диалог для создания секретов Kubernetes.

Чтобы определить новый секрет, можно вручную ввести данные для Key и Value или указать файл, содержимое которого следует использовать.

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

Цветные маркеры изменений для ресурсов, загруженных из кластера

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

Использование функции Compare with Cluster

Кроме того, если нажать на значок Compare with Cluster, откроется окно, в котором можно сравнить текущую версию ресурса из кластера с локальной версией.

Открытие файла kubeconfig в редакторе из окна Services

Упрощение работы с файлами kubeconfig

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

Назначение сочетания клавиш для действия Forward Ports

Возможность выбирать сочетания клавиш для действий в окне Services

Теперь можно назначить сочетания клавиш для большинства Kubernetes-действий в окне Services, например: Forward Ports, Delete Resource, Describe Resource и других. Для этого перейдите в раздел Settings | Keymap | Plugins | Kubernetes.

Markdown

Использование действия для изменения форматирования таблицы в файле Markdown

Изменение форматирования таблиц

Мы добавили новое действие, которое позволяет исправить форматирование таблиц в Markdown-файлах. К быстрому исправлению можно перейти через контекстные действия (Alt+Enter) или нажав на значок желтой лампочки и выбрав опцию Reformat table в открывшемся списке.

Использование действия Fill Paragraph для разбивки длинного текста на несколько строк

Действие Fill Paragraph

Действие Fill Paragraph теперь поддерживается для Markdown-файлов, позволяя разбивать длинные тексты на несколько строк одинаковой длины. Установите курсор внутри абзаца, который нужно отредактировать, и вызовите действие Fill Paragraph через меню Edit или найдите его с помощью Search everywhere (двойное нажатие Shift).

Страница настроек Smart Keys для Markdown

Новая страница настроек Smart Keys

Мы добавили специальную страницу для изменения настроек Markdown в разделе Settings | Editor | General | Smart Keys. Так вам будет проще настроить IDE согласно своим предпочтениям, поскольку на этой странице есть отдельные флажки для разных функций редактора (раньше был всего один флажок в разделе Settings | Languages & Frameworks).

Интеграция с системами контроля версий

Навигация между ветками в GoLand

Улучшенное окно Branches

Всплывающее окно Branches стало более удобным. В частности, вам будет проще перемещаться между ветками, потому что теперь они сгруппированы и хранятся в раскрываемых списках.

Использование автодополнения в диалоге Create New Branch

Автодополнение в окне Create New Branch

Во всплывающем окне Create New Branch теперь работает автодополнение. Нажмите Ctrl+Space, и IDE предложит соответствующие префиксы на основе имен существующих локальных веток.

Цвета объектов на панели Structure меняются при добавлении нового кода

Цветовые подсказки статуса VCS на панели Structure

Чтобы вам было удобнее следить за изменениями в файлах, мы добавили на панель Structure цветовую индикацию. Имена измененных объектов теперь отображаются синим цветом, а имена вновь добавленных объектов — зеленым.

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

Фоновые проверки коммитов

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

Окно пул-реквестов в GoLand

Улучшенный рабочий процесс код-ревью для GitHub

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

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

Страница плагинов с плагином Astro

Поддержка Astro

В GoLand появилась долгожданная поддержка Astro. Чтобы ею воспользоваться, установите Astro-плагин через меню Settings | Plugins. Плагин предоставляет базовую функциональность, включая подсветку синтаксиса, автодополнение кода с автоматическими импортами, рефакторинги, навигацию, правильное форматирование и многое другое.

Преобразование строк в шаблонные литералы

Автоматическое преобразование строк в шаблонные литералы

GoLand теперь автоматически преобразовывает строки с одинарными или двойными кавычками в шаблонные литералы всякий раз, когда вы вводите ${. Это работает как для простых строк, так и для свойств JSX.

Поддержка TypeScript в шаблонных выражениях Vue

Мы добавили поддержку TypeScript в Vue-шаблоны, когда вы устанавливаете для атрибута lang в теге script значение ts. Раньше, независимо от атрибута lang в теге script, использовался JavaScript.

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