GoLand 2020.3 — дамп горутин, запуск табличных тестов, расширенная поддержка Testify
Привет, Хабр!
Несколько недель назад вышел GoLand 2020.3, последний релиз уходящего года. Сегодня расскажем, почему стоит обновиться на новую версию или попробовать нашу IDE для Go разработчиков.
Что нового:
Дамп и фильтрация горутин в отладчике
Точечный запуск табличных тестов
Расширенная поддержка Testify фреймворка
Поддержка пакета time
Улучшения в UI
Обновления для веб-разработки
Обновления для работы с базами
Сервис для совместной разработки и парного программирования
Кстати, узнать о новой функциональности в интерактивной форме можно прямо в IDE. Пройдите урок What's New in GoLand 2020.3 на экране приветствия.
Улучшения в отладчике
Иконка Dump Goroutines в отладчике помогает быстро находить горутины с определенной строкой в стеке во время отладки. Кликните на иконку, чтобы открыть дамп в отдельном окне.
Чтобы сфокусироваться, вы можете скрыть одну или несколько горутин с одинаковым стеком. Кликните правой кнопкой на горутину, чтобы переместить ее в раздел Hidden.
Теперь, когда вы используете конфигурацию Go Remote, можно остановить процесс отладки, если вы уверены, что повторное подключение к процессу больше не потребуется.
В настройках вы можете задать поведение отладчика при отключении: Stop remote Delve processes, Leave it running или указать, чтобы GoLand каждый раз предлагал вам эти опции.
Тестирование
Поддержка табличного тестирования
Теперь можно запускать отдельные табличные тесты и навигироваться на них из окна Run.
Ограничения:
Переменные должны быть срезом, массивом или словарем, которые определены в той же функции, что и вызов, и не использованы после инициализации (за исключением цикла
for
).Входными данными для теста должен быть структурный литерал. Переменные цикла, используемые в выражении подтеста, не должны быть использованы перед вызовом.
Выражение имени подтеста может быть строковым полем, конкатенацией строковых полей или вызовом
fmt.Sprintf()
с%s
или%d
.
Расширенная поддержка Testify
Если имя подтеста в тестовой функции является строковым значением, IDE позволит запустить suite.Run
и suite.T().Run
отдельно. Чтобы избежать повторного запуска всего теста, теперь можно перезапустить только подтест из окна Run.
В дополнение теперь можно запускать Testify
наборы с одним и тем же методом отдельно внутри одного теста.
Когда вы пишете функцию или метод из пакетов testify/assert
, testify/require
, testify/mock
и testify/suite
, которые принимают testing.T
в качестве первого аргумента, GoLand предложит для них автоматическое дополнение.
Инспекции кода
Инспекция кода Incorrect usage of Println/Printf like functions предупредит о потенциальных проблемах в пакетах github.com/pkg/errors
, github.com/sirupsen/logrus
и go.uber.org/zap
.
Также мы добавили подсветку плейсхолдеров и свернутых кусков кода. Для генерации плейсхолдеров в форматных строках, вы можете воспользоваться intention-действием Add format string argument.
Инспекция кода context.CancelFunc is not called сообщает о небезопасной отмене контекстов. Это особенно полезно, когда функция отмены возвращаемая context.WithCancel или похожими по значению функциями, не была вызвана на одном из путей выполнения.
Узнать больше про этот пакет можно здесь.
Редактирование кода
Поддержка пакета time
Мы добавили поддержку пакета time, чтобы вам было проще работать с форматированием дат и времени. Автодополнение (Ctrl+Space) предложит элементы шаблонов для YYYY
, MM
, DD
, определенных в стандарте ISO-8601.
Также мы добавили подсветку синтаксиса, а если нажать Ctrl+P на ключе, то IDE покажет его значение. Кроме того, автодополнение кода предлагает стандартные шаблоны дат из пакета time.
Работа с пакетами
IDE предложит первыми в списке автодополнения пакеты, которые вы часто используете или которые явно объявлены в файле go.mod
текущего проекта.
Мы также добавили возможность полностью исключить пакеты из пути импорта и автодополнения. Это можно сделать с помощью Alt+Enter или в окне Exclude for import and completion в разделе Preferences/Settings | Go | Imports.
Поддержка для затененных переменных
GoLand 2020.3 помогает быстрее обнаружить затененные переменные. Во-первых, IDE подсвечивает такие переменные разными цветами. А во-вторых, действие Navigate to shadowing declaration мгновенно переключит фокус на затененное объявление.
Квадратные скобки для прототипа дженериков
Руководствуясь последним обновлением прототипа дженериков от команды Go, мы добавили поддержку квадратных скобок вместо круглых.
Обратите внимание, что поддержка Enable generics (experimental support for type parameters) отключена по умолчанию в Preferences/Settings | Go.
Читайте этот пост, чтобы узнать больше о параметрах-типах.
Другие улучшения
При вводе func
в тестовом файле, GoLand предложит bench
и test
Live Templates в списке автодополнения.
Когда вы пишете for
внутри бенчмарка, IDE предложит автодополнение в виде цикла с b.N
.
Качественная проверка правописания
При нажатии на Alt+Enter, рекомендации по исправлению теперь находятся в основном списке. Ещё мы улучшили качество проверки грамматики для английского языка и добавили поддержку 10 новых.
Code With Me
GoLand 2020.3 поддерживает Code With Me (Early Access Program) — наш новый сервис для совместной разработки и парного программирования. С его помощью вы и ваша команда можете вместе работать над проектами из своих IDE.
Подробнее о Code With Me здесь.
Улучшения пользовательского интерфейса
Обновленное окно приветствия
Мы переработали окно приветствия (Welcome), чтобы предоставить вам мгновенный доступ к:
Поиску проектов
Настройкам IDE
Плагинам
Интерактивным урокам
Синхронизация темы IDE c системными настройками
Выберите опцию Sync with OS в Preferences/Settings | Appearance & Behavior | Appearance | Theme, чтобы синхронизировать тему IDE с настройками вашей операционной системы.
Перетаскивание вкладок и разделение редактора
Разделите главный экран редактора по горизонтали или вертикали, перетащив вкладку в удобное для вас место. Редактор подсветит место, где она может быть закреплена.
Панель Project
Мы улучшили UX при работе с файлами в панели Project. Выберите файл в панели и нажмите на пробел, чтобы IDE открыла вам его предварительный просмотр. При открытии файла из Project фокус автоматически переносится в редактор, чтобы сразу начать работу с кодом.
Открыть несколько файлов в редакторе одновременно теперь можно с помощью набора клавиш. Выберите файл в Project и нажмите Shift+Enter, чтобы IDE разделила окно редактора и открыла файл в его правой части.
Интеграция с системами контроля версий
Обновленное меню VCS
Меню VCS теперь адаптировано к используемой в настоящее время системе управления версиями, что облегчает доступ к ключевым функциям VCS, так как они больше не скрыты в подменю.
Поддержка Git staging
В новой версии появилась поддержка добавления содержимого рабочей директории в индекс (Git staging). Добавлять файлы можно из окна Commit, а также прямо из редактора.
Чтобы включить эту функциональность, выберите опцию Enable staging area в Preferences/Settings| Version Control | Git. Как только вы это сделаете, поддержка списка изменений будет отключена.
В интерфейсе вы увидите все измененные файлы в коммите (добавленные и не добавленные). Нажмите на значок +, чтобы добавить файлы в новый узел Staged. Вы также можете добавлять файлы на стейджинг через поле редактора или вкладку Show Diff.
Оптимизация работы с ветками
Список улучшений:
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. В Preferences/Settings | Plugins нажмите на значок шестерёнки на странице плагина, который вы хотите включить или выключить, и выберите нужную опцию.
Альтернативная macOS раскладка
Раскладка macOS System Shortcuts в (Preferences/Settings | Keymap) предоставляет альтернативную macOS раскладку. Она лучше совместима с системными шорткатами и меньше использует F-клавиши для часто используемых действий.
Улучшенный флейм-граф в профилировщике
Мы улучшили поиск по флейм-графу в профилировщике и его визуализацию. Вы можете нажать на иконку лупы или ввести запрос в поле поиска внутри панели.
Также мы добавили стрелки для быстрой навигации между результатами, возможность поиска по всему флейм-графу или в определенном поддереве.
Веб разработка
Быстрое создание React-компонентов
Благодаря команде WebStorm, GoLand предлагает вам комфортную среду для веб-разработки. Например, реализовать недостающие React компоненты стало проще. Поставьте курсор на нужный компонент, нажмите Alt+Enter и выберите нужный вариант.
Полная поддержка pnpm
GoLand 2020.3 полностью поддерживает менеджер зависимостей pnpm наряду с npm и yarn. Если у вас установлен pnpm и вы откроете проект с pnpm-lock файлом, GoLand поменяет менеджер зависимостей автоматически. Также мы добавили pnpm в список менеджеров зависимостей: Preferences/Settings | Languages and Frameworks | Node.js and NPM.
Базовая поддержка сложной конфигурации webpack
В GoLand 2020.3 можно выбрать между ручной и автоматической идентификацией конфигурационных файлов. Эту опцию можно найти в Preferences/Settings | Languages & Frameworks | JavaScript | Webpack.
Все изменения WebStorm попали в GoLand. Чтобы узнать больше о новой функциональности, посетите эту страницу.
Работа с базами данных
Поддержка Couchbase
Благодаря команде DataGrip, GoLand расширил семейство поддерживаемых баз данных. Встречайте – Couchbase! Важно отметить, что IDE поддерживает Couchbase Query, а не Couchbase Analytics.
Права доступа
DataGrip теперь знает о правах доступа и показывает их в сгенерированном DDL для объекта. Это работает для MySQL, PostgreSQL, Greenplum, Redshift и SQL Server.
Редактор больших значений
Мы улучшили в редакторе несколько вещей:
Теперь он отображает отформатированное значение, даже если оно не отформатировано должным образом.
Если в ячейке хранится однострочный XML или JSON-файл, в редакторе значений он будет показан в отформатированном виде.
Если вам важна ширина экрана, передвиньте редактор вниз.
Еще в этом же редакторе отображаются картинки.
Импорт и экспорт
Мы добавили два новых формата, чтобы облегчить вам работу с данными:
One-Row копирует выделенные значения в одну строку через запятую.
SQL-Insert-Multirow генерирует один
INSERT
для нескольких строк.
Кроме того, в CSV-форматах появилась новая опция: never quote values.
Как и в случае с WebStorm, GoLand наследует весь пакет обновлений от DataGrip. Подробнее о новой функциональности для работы с базами данных можно узнать здесь.
Вот и всё! Идеи для улучшений мы часто берем из ваших отзывов и предложений. Пишите нам здесь в комментариях, в наш баг-трекер или Twitter.
По традиции напоминаю, что если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там, если установить этот плагин.
Спасибо за внимание!