Что нового в GoLand 2018.3

Привет, Хабр!

На прошлой неделе вышла новая версия GoLand 2018.3.


bsmkbv4fnnpoqfyn2pbcu9jpvp8.png

В этом обновлении вы найдете множество улучшений для отладки и тестирования. Это отладка приложений на платформе Google App Engine, Testify фреймворк, анализ дампов памяти и Mozilla rr.

Появился новый Change Signature рефакторинг, инспекции кода и автодополнение для функций.

Кроме того, мы добавили поддержку для диаграмм, улучшили Rename и Inline рефакторинги, работу с шаблонами Go (text/html) и системой контроля версий для Git, Docker и Kubernetes плагины, и многое другое.


Change Signature рефакторинг

Рефакторинг Change Signature изменяет сигнатуру функций и методов. Он помогает задать новое имя или переместить, переименовать, добавить или удалить параметры.

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

Перед тем как применить рефакторинг, посмотрите, что получится в панели предварительного просмотра.

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


gkyb04ps8sqynaxx0odhby-qqva.gif

Rename и Inline рефакторинги

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


9gpgoyv8qrdshtt25gtamolv9dk.png

Результат применения Inline рефакторинга теперь видно сразу: GoLand подсвечивает измененный код.


9n9ypc-njbuloj0ishyqndtajje.gif

Отладка приложения на платформе Google App Engine

В новой версии отладчик позволяет локально запускать и отлаживать приложения на платформе Google App Engine.

А еще мы добавили новый шаблон проекта — App Engine. Он содержит app.yaml c базовыми настройками конфигурации и main.go файл с обработчиком запросов.


th9ra9ujtihcfj28u7-lviu0aq0.png

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

Иногда стандартные инструменты отладки не дают полного представления о том, что происходит с программой в определенные моменты ее выполнения. В этом случае помогут дампы памяти.

Чтобы начать анализировать дамп памяти в GoLand, выберите Open Core Dump в Run меню.

Чтобы автоматически создать аварийные дампы памяти, введите GOTRACEBACK=crash в поле Environment конфигурации Run.

Создавать дампы памяти можно только на Linux, однако анализировать можно и на macOS, и Windows.


vkytupes5it979qfboameggampc.gif

Поддержка Testify

GoLand 2018.3 поддерживает Testify фреймворк. Запускайте тестовые наборы (suites) и методы прямо из редактора, как обычные тестовые функции.

В окне Comparison Failure сравнивайте фактическое и ожидаемое значение, если тест упал.


m5kkabjzflxq--plw5_quotxidq.gif

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

Появились две новые инспекции кода: Unhandled Error и Unreachable code.

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


wbeaxzhwrxu61rmxuzgr_w9fo2e.png

Unreachable code выявляет части кода, которые никогда не будут выполнены.


xyj20avol0u3frt3nmw65z2rc5k.png

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


_ui96xetlxjqz-qqmohl4jldawa.gif

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

В GoLand 2018.3 появился новый вид автодополнения для функций. Представьте, что вы новичок в мире golang и вам нужно разделить строку. Вы знаете, что для этого должна быть функция, и скорее всего, она называется »split». Эта функция должна принимать строку в качестве первого аргумента, но вы не знаете точное имя функции и ее пакета. Новый вид автодополнения помогает легко находить такие функции.

Дважды вызовите Basic completion (Ctrl + Space + Space), чтобы просмотреть все доступные варианты завершения.


ktwsys-cwl6d2d5rmauehyvfequ.gif

Intention actions

Add format string argument генерирует спецификатор формата для заданного выражения, вставляет спецификатор в форматную строку и передает выражение в качестве аргумента спецификатора.


4zaockpqoh25z1r6luyeggk8p0m.gif

Generate Constructor создает специальную функцию для инициализации структур.


wf1d9ayownzemq0tg2msgwe3pry.gif

Generate getter/setter теперь позволяет редактировать параметры сгенерированной функции.


ydfffnov3xzwt5cbw8ezufavkky.gif

Generate Constructor, Generate getter/setter, и Generate getter and setter теперь доступны через Generate меню.


Отладчик

В диалоге Evaluate Expression и панели Watchers теперь есть автодополнение, инспекции и автоматическое исправление ошибок.


ln8vw2oohx2nmnm5jrqycgevibk.gif

Шаблоны Go (html/template)

В шаблонах Go (html/template) работают автодополнение кода и Rename рефакторинг, появилась возможность переходить от любого символа к местам его использования, и улучшилось форматирование.


1p8damc2sp8ri-qmn3xr2fywelk.gif

Mozilla rr

Мы добавили поддержку rr от Mozilla в отладчик на Linux. Записывайте и воспроизводите ход выполнения программы, используя всего две кнопки. Для начала отладки нужно установить Mozilla rr.

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


rssr5nfkc243cphczp9ilurgsx8.gif

Диаграммы

Мы добавили поддержку диаграмм для визуализации:


  • зависимостей внутри Go modules проектов;
  • отношений между импортируемыми и экспортируемыми модулями в JavaScript и TypeScript проектах;
  • связей между таблицами в базах данных и SQL.


8xd0vvuttlt4ywmat4q9o6iglxe.png

Поиск и навигация

Диалоги Find in Path и Replace in Path теперь работают с многострочными фрагментами кода.


bxca5mah_ebh9xkbviw6v5tzqxe.png

Окно поиска, Search Everywhere, работает быстрее и объединяет в себе Go to type, Go to file, Go to symbol, и Find действия. Используйте TAB, чтобы переключаться между между вкладками.


xjyfclnc-xaxi6omcngt-c5phcm.gif

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

Новые иконки в редакторе не только подскажут, что нужно переопределить методы, но и помогут в один клик перейти от одного такого имени к другому.


gqly8y3wlqoafc5samckm0u6_qo.gif

Complete Current Statement автоматически вставляет запятую в составных литералах (структуры, словари и пр.) и ставит курсор на позицию следующего утверждения.


krhq2vk4spmgggslq7d3honl3oo.gif

В GoLand 2018.3 можно определить набор файлов, к которым не будут применяться действия Reformat code, Optimize imports, и Rearrange.


f5ozpjygaf_nz2oqql8zas_dq8i.png

IDE поддерживает многострочные TODO комментарии для файлов на Go, JavaScript, TypeScript, CSS, и SCSS.


8vy1bgofz4xzusvyjhgsktkwfs8.png

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

Интеграция с Git теперь отображает запросы на проверку изменений для репозитория в новом окне — GitHub Pull Requests, а также поддерживает Git submodules.


leeflyi37bd2suqpf7kjkrvis-c.gif

Доступность

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


szwn8kt_5gflytfi1lejng9v_li.png

Docker

Docker плагин поддерживает CLI-аргументы в Run-конфигурации. В новом поле Build конфигурации запуска Dockerfiles можно использовать следующие аргументы: cache-from, cpu-shares, cpuset-cpus, force-rm, label,memory, memory-swap, shm-size, no-cache, pull, quiet, и rm.


wdf3ktg1y4pepbrtqrwiqkjvkvw.png

Kubernetes плагин

Автодополнение кода, Rename рефакторинг, инспекции кода и быстрые исправления работают в шаблонах Helm.


47-q7grjapzqeee89euhxwrnqaw.png

Другие изменения


  • Действие Attach теперь есть в меню Open Project, что позволяет добавить каталог прямо во время открытия нового проекта.
  • Теперь можно открыть проект, перетащив его на окно приветствия.
  • Activity Monitor показывает, сколько ресурсов процессора потребляют различные подсистемы и плагины: Help | Activity Monitor.
  • Поиск и обновление плагинов вIDE стал более удобным. Страница плагинов поддерживает поиск по тегам и сортировку результатов по загрузкам, имени, рейтингу, рекомендованным или обновленным.
  • Индексирование проектов происходит значительно быстрее.

Все! Как всегда, мы будем рады услышать ваше мнение: пишите нам здесь в комментариях, в Twitter или баг-трекере:)

Скачать обновление можно на странице загрузки или через приложение Toolbox App.

На всякий случай напоминаю, что если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там: просто установите этот плагин.

Спасибо за внимание!

© Habrahabr.ru