Что нового в GoLand

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

Кстати, узнавать о новой функциональности в интерактивной форме можно прямо в IDE. Пройдите урок What's New in GoLand 2020.3 на начальном экране.

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

Исследование стека горутин в отладчике

Новая иконка Dump Goroutines в отладчике позволяет быстро находить горутины с определенной строкой в стеке во время отладки. Просто кликните на иконку, чтобы открыть дамп в отдельном окне.

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

Остановка конфигурации 'Go Remote'

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

В настройках вы можете задать поведение отладчика при отключении: Stop remote Delve processes, Leave it running или указать, чтобы GoLand каждый раз предлагал вам эти опции.

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

Запуск отдельного табличного теста

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

Теперь можно запускать отдельные табличные тесты и переходить к ним из окна Run.

Ограничения:

  • Переменные должны быть срезом, массивом или словарем. Они должны быть определены в той же функции, что и вызов, и не должны быть использованы после инициализации (за исключением цикла for).
  • Входными данными для теста должен быть структурный литерал. Переменные цикла, используемые в выражении подтеста, не должны быть использованы перед вызовом.
  • Выражение имени подтеста может быть строковым полем, конкатенацией строковых полей или вызовом fmt.Sprintf() с %s или %d.
GoLand предлагает аргумент внутри тестовой функции

Расширенная поддержка Testify

Если имя подтеста в тестовой функции является строковым значением, IDE позволит запустить suite.Run и suite.T().Run отдельно. Чтобы избежать повторного запуска всего теста целиком, теперь можно перезапустить только подтест из окна Run.

В дополнение теперь можно запускать Testify наборы с одним и тем же методом отдельно внутри одного теста.

Когда вы пишете функцию или метод, которые принимают testing.T в качестве первого аргумента, GoLand предложит для него автоматическое дополнение. Оно работает для функций и методов из пакетов testify/assert, testify/require, testify/mock и testify/suite.

Инспекции кода

GoLand предупреждает о потенциальной проблеме в редакторе и показывает intention-действие 'Add format string argument'

Инспекция кода Incorrect usage of Println/Printf like functions предупредит о потенциальных проблемах в пакетах github.com/pkg/errors, github.com/sirupsen/logrus и go.uber.org/zap.

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

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

Инспекция кода context.CancelFunc is not called сообщает о небезопасной отмене контекстов. Это особенно полезно, когда функция отмены, возвращаемая context.WithCancel или похожими по значению функциями, не была вызвана на одном из путей выполнения.

Узнать больше про этот пакет можно здесь: https://golang.org/pkg/context/.

Редактирование кода

GoLand предоставляет автодополнение для пакета time

Поддержка пакета time

Мы добавили поддержку пакета time, чтобы вам было проще работать с форматированием дат и времени. Автодополнение (Ctrl+Space) предложит элементы шаблонов для YYYY, MM, DD, определенных в стандарте ISO-8601.

Также мы добавили подсветку синтаксиса. А если нажать <0>Ctrl+P на ключе, то IDE покажет его значение. Кроме того, автодополнение кода предлагает стандартные шаблоны дат из пакета time.

Исключение пакета из импорта и автодополнения с помощью Alt+Enter

Более умная работа с пакетами

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

Мы также добавили возможность полностью исключить пакеты из пути импорта и автодополнения. Это можно сделать с помощью Alt+Enter или в окне Exclude for import and completion в разделе Settings | Go | Imports|.

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

Поддержка для затененных переменных

GoLand помогает быстрее обнаружить затененные переменные:

  • IDE отображает затененные переменные в разных цветах.
  • Intention-действие Navigate to shadowing declaration позволяет мгновенно переключиться на затененное объявление.
GoLand поддерживает квадратные скобки для прототипа дженериков

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

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

Обратите внимание, что поддержка Enable generics (experimental support for type parameters) отключена по умолчанию в Settings | Go. Чтобы начать использовать эту функциональность, необходимо явно отметить этот флажок.

Читайте этот блог пост, чтобы узнать больше о параметрах-типах.

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

GoLand показывает 'Test' и 'Benchmark' Live Templates в списке автодополнения

При вводе func в тестовом файле, GoLand предложит bench и test Live Templates в списке автодополнения.

GoLand предлагает автодополнение для цикла с b.N внутри бенчмарка

Когда вы пишете for внутри бенчмарка, IDE предложит автодополнение в виде цикла с b.N.

GoLand предлагает исправить ошибку

Умная проверка правописания

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

Code With Me

'Code With Me' в действии

GoLand 2020.3 поддерживает Code With Me (EAP) — наш новый сервис для совместной разработки и парного программирования. С его помощью вы и ваша команда можете вместе работать над проектами прямо из своих IDE.

Подробнее о Code With Me.

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

Обновленный начальный экран

Обновленный начальный экран

Мы переработали начальный экран, чтобы предоставить вам мгновенный доступ к:

  • Поиску проектов.
  • Настройкам IDE.
  • Плагинам.
  • Интерактивным урокам.
'Sync with OS theme опция в настройках

Синхронизация темы IDE c системными настройками

Выберите опцию Sync with OS в Settings | Appearance & Behavior | Appearance | Theme, чтобы синхронизировать тему IDE с настройками вашей операционной системы.

Перетаскивание вкладки для разделения редактора

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

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

Открытие второго файла в редакторе

Панель Project

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

Открыть несколько файлов в редакторе одновременно теперь можно с помощью набора клавиш. Выберите файл в Project и нажмите Shift+Enter, чтобы IDE разделила окно Editor и открыла файл в правой его части.

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

Обновленное меню VCS

Обновленное меню VCS

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

Поддержка Git staging

Поддержка Git-стейджинга

В новой версии появилась поддержка добавления содержимого рабочей директории в индекс (Git staging). Добавлять файлы можно из окна Commit, а также прямо из редактора.

Чтобы включить эту функциональность, выберите опцию Enable staging area в Settings | Version Control | Git. Как только вы это сделаете, поддержка списка изменений будет отключена.

В интерфейсе вы увидите все измененные файлы в коммите (добавленные и не добавленные). Нажмите на значок +, чтобы добавить файлы. Файлы появятся в новом узле Staged. Вы также можете добавлять файлы на стейджинг через поле редактора или вкладку Show Diff.

GoLand исправляет неверное название ветки

Оптимизация работы с ветками

А вот список улучшений при работе с ветками:

  • IDE автоматически корректирует недопустимые символы в именах новых веток.
  • GoLand показывает все действия, доступные для текущей ветки и любых других.
  • Для удаленных ветвей мы переименовали действия Merge into Current и Rebase Current onto Selected в Pull into Current Using Merge и Pull into Current Using Rebase.

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

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

Возможность включить плагин под проект

Мы добавили возможность включения плагинов для текущего проекта или всех проектов с помощью опций Enable for Current Project или Enable for All Projects. В Settings | Plugins нажмите на значок шестеренки на странице плагина, который вы хотите включить или выключить, и выберите нужную опцию.

Плагин системной раскладки для macOS в настройках

Альтернативная macOS раскладка

Раскладка macOS System Shortcuts в (Settings | Keymap) предоставляет альтернативную macOS раскладку. Она лучше совместима с системными шорткатами и меньше использует F-клавиши для часто используемых действий.

Флейм-граф в профилировщике

Улучшенный флейм-граф в профилировщике

Мы улучшили поиск по флейм-графу в профилировшике и его визуализацию. Вы можете нажать на иконку лупы или ввести запрос в поле поиска внутри панели.

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

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

Быстрое создание React-компонентов

Быстрое создание React-компонентов

Благодаря команде WebStorm, GoLand предлагает вам комфортную среду для веб разработки. Например, реализовать недостающие React компоненты теперь проще простого! Поставьте курсор на нужный компонент, нажмите Alt+Enter и выберите нужный вариант.

GoLand обнаружил pnpm на компьютере

Полная поддержка pnpm

GoLand 2020.3 полностью поддерживает менеджер зависимостей pnpm наряду с npm и yarn. Если у вас установлен pnpm и вы откроете проект с pnpm-lock файлом, GoLand поменяет менеджер зависимостей автоматически. Также мы добавили pnpm в список менеджеров зависимостей: Settings | Languages and Frameworks | Node.js and NPM.

Настройки webpack

Базовая поддержка сложной конфигурации webpack

В GoLand 2020.3 можно выбрать между ручной и автоматической идентификацией конфигурационных файлов. Эту опцию можно найти в Settings | Languages & Frameworks | JavaScript | Webpack.

Работа с базами данных

Добавление Couchbase Query источником данных

Поддержка Couchbase

Благодаря команде DataGrip, GoLand расширил семейство поддерживаемых баз данных. Встречайте – Couchbase! Важно отметить, что IDE поддерживает Couchbase Query, а не Couchbase Analytics.

GoLand отображает права и показывает их в сгенерированном DDL

Права доступа

DataGrip теперь знает о правах доступа и показывает их в сгенерированном DDL для объекта. Это работает для MySQL, PostgreSQL, Greenplum, Redshift и SQL Server.

GoLand отображает отформатированное значение в отдельном редакторе

Редактор больших значений

Мы улучшили в редакторе несколько вещей:

  • Теперь он отображает отформатированное значение, даже если оно не отформатировано должным образом.
  • Если в ячейке хранится однострочный XML или JSON-файл, в редакторе значений он будет показан в отформатированном виде.
  • Если вам важна ширина экрана, передвиньте редактор вниз.
  • Еще в этом же редакторе отображаются картинки.
'One-Row' в действии

Импорт и экспорт

Мы добавили два новых формата, чтобы облегчить вам работу с данными:

  • One-Row копирует выделенные значения в одну строку через запятую.
  • SQL-Insert-Multirow генерирует один INSERT для нескольких строк.

Кроме того, в CSV-форматах появилась новая опция: never quote values.