Привет, Хабр! На прошлой неделе вышла новая версия GoLand 2018.3.
![](https://habrastorage.org/webt/bs/mk/bv/bsmkbv4fnnpoqfyn2pbcu9jpvp8.png)
В этом обновлении вы найдете множество улучшений для отладки и тестирования. Это отладка приложений на платформе Google App Engine, Testify фреймворк, анализ дампов памяти и Mozilla rr.
Появился новый Change Signature рефакторинг, инспекции кода и автодополнение для функций.
Кроме того, мы добавили поддержку для диаграмм, улучшили Rename и Inline рефакторинги, работу с шаблонами Go(text/html) и системой контроля версий для Git, Docker и Kubernetes плагины, и многое другое.
Change Signature рефакторинг
Рефакторинг Change Signature изменяет сигнатуру функций и методов. Он помогает задать новое имя или переместить, переименовать, добавить или удалить параметры.
Если меняете сигнатуру метода, GoLand предложит обновить имплементации.
Перед тем как применить рефакторинг, посмотрите, что получится в панели предварительного просмотра.
Список всех файлов и объектов, к которым применяется рефакторинг, отображается в панели. Если нужны подробности, из панели можно перейти к любому изменяемому символу в проекте. Если результат не соответствует ожиданиям, изменения можно отменить.
![](https://habrastorage.org/webt/gk/yb/04/gkyb04ps8sqynaxx0odhby-qqva.gif)
Rename и Inline рефакторинги
Rename теперь предупреждает о потенциальных конфликтах в результате переименования. Мы добавили диалог, который сообщает о проблеме и предлагает сделать выбор: игнорировать конфликт, рассмотреть или отменить рефакторинг.
![](https://habrastorage.org/webt/9g/pg/oy/9gpgoyv8qrdshtt25gtamolv9dk.png)
Результат применения Inline рефакторинга теперь видно сразу: GoLand подсвечивает измененный код.
![](https://habrastorage.org/webt/9n/9y/pc/9n9ypc-njbuloj0ishyqndtajje.gif)
Отладка приложения на платформе Google App Engine
В новой версии отладчик позволяет локально запускать и отлаживать приложения на платформе Google App Engine.
А еще мы добавили новый шаблон проекта — App Engine. Он содержит app.yaml
c базовыми настройками конфигурации и main.go
файл с обработчиком запросов.
![](https://habrastorage.org/webt/th/9r/a9/th9ra9ujtihcfj28u7-lviu0aq0.png)
Поддержка анализа дампов памяти
Иногда стандартные инструменты отладки не дают полного представления о том, что происходит с программой в определенные моменты ее выполнения. В этом случае помогут дампы памяти.
Чтобы начать анализировать дамп памяти в GoLand, выберите Open Core Dump в Run меню.
Чтобы автоматически создать аварийные дампы памяти, введите GOTRACEBACK=crash
в поле Environment конфигурации Run.
Создавать дампы памяти можно только на Linux, однако анализировать можно и на macOS, и Windows.
![](https://habrastorage.org/webt/vk/yt/up/vkytupes5it979qfboameggampc.gif)
Поддержка Testify
GoLand 2018.3 поддерживает Testify фреймворк. Запускайте тестовые наборы (suites) и методы прямо из редактора, как обычные тестовые функции.
В окне Comparison Failure сравнивайте фактическое и ожидаемое значение, если тест упал.
![](https://habrastorage.org/webt/m5/kk/ab/m5kkabjzflxq--plw5_quotxidq.gif)
Инспекции кода
Появились две новые инспекции кода: Unhandled Error и Unreachable code.
Unhandled Error предупреждает о функциях и методах, которые возвращают ошибку, но проверок для обработки этой ошибки нет.
![](https://habrastorage.org/webt/wb/ea/xz/wbeaxzhwrxu61rmxuzgr_w9fo2e.png)
Unreachable code выявляет части кода, которые никогда не будут выполнены.
![](https://habrastorage.org/webt/xy/j2/0a/xyj20avol0u3frt3nmw65z2rc5k.png)
Кроме того, инспекция Function Call, которая проверяет, нужно ли преобразовывать выражение в функцию или вызов метода, теперь умеет автоматически исправлять ошибки с помощью Finish Call Expression.
![](https://habrastorage.org/webt/_u/i9/6x/_ui96xetlxjqz-qqmohl4jldawa.gif)
Автодополнение
В GoLand 2018.3 появился новый вид автодополнения для функций. Представьте, что вы новичок в мире golang и вам нужно разделить строку. Вы знаете, что для этого должна быть функция, и скорее всего, она называется "split
". Эта функция должна принимать строку в качестве первого аргумента, но вы не знаете точное имя функции и ее пакета. Новый вид автодополнения помогает легко находить такие функции.
Дважды вызовите Basic completion (Ctrl + Space + Space), чтобы просмотреть все доступные варианты завершения.
![](https://habrastorage.org/webt/kt/ws/ys/ktwsys-cwl6d2d5rmauehyvfequ.gif)
Intention actions
Add format string argument генерирует спецификатор формата для заданного выражения, вставляет спецификатор в форматную строку и передает выражение в качестве аргумента спецификатора.
![](https://habrastorage.org/webt/4z/ao/ck/4zaockpqoh25z1r6luyeggk8p0m.gif)
Generate Constructor создает специальную функцию для инициализации структур.
![](https://habrastorage.org/webt/wf/1d/9a/wf1d9ayownzemq0tg2msgwe3pry.gif)
Generate getter/setter теперь позволяет редактировать параметры сгенерированной функции.
![](https://habrastorage.org/webt/yd/ff/fn/ydfffnov3xzwt5cbw8ezufavkky.gif)
Generate Constructor, Generate getter/setter, и Generate getter and setter теперь доступны через Generate меню.
Отладчик
В диалоге Evaluate Expression и панели Watchers теперь есть автодополнение, инспекции и автоматическое исправление ошибок.
![](https://habrastorage.org/webt/ln/8v/w2/ln8vw2oohx2nmnm5jrqycgevibk.gif)
Шаблоны Go (html/template)
В шаблонах Go (html/template) работают автодополнение кода и Rename рефакторинг, появилась возможность переходить от любого символа к местам его использования, и улучшилось форматирование.
![](https://habrastorage.org/webt/1p/8d/am/1p8damc2sp8ri-qmn3xr2fywelk.gif)
Mozilla rr
Мы добавили поддержку rr от Mozilla в отладчик на Linux. Записывайте и воспроизводите ход выполнения программы, используя всего две кнопки. Для начала отладки нужно установить Mozilla rr.
В остальном, все работает так же, как и в стандартном отладчике, за исключением специальной кнопки Rewind для Mozilla rr. Она запускает программу назад до предыдущей точки останова.
![](https://habrastorage.org/webt/rs/sr/5n/rssr5nfkc243cphczp9ilurgsx8.gif)
Диаграммы
Мы добавили поддержку диаграмм для визуализации:
- зависимостей внутри Go modules проектов;
- отношений между импортируемыми и экспортируемыми модулями в JavaScript и TypeScript проектах;
- связей между таблицами в базах данных и SQL.
![](https://habrastorage.org/webt/8x/d0/vv/8xd0vvuttlt4ywmat4q9o6iglxe.png)
Поиск и навигация
Диалоги Find in Path и Replace in Path теперь работают с многострочными фрагментами кода.
![](https://habrastorage.org/webt/bx/ca/5m/bxca5mah_ebh9xkbviw6v5tzqxe.png)
Окно поиска, Search Everywhere, работает быстрее и объединяет в себе Go to type, Go to file, Go to symbol, и Find действия. Используйте TAB, чтобы переключаться между между вкладками.
![](https://habrastorage.org/webt/xj/yf/cl/xjyfclnc-xaxi6omcngt-c5phcm.gif)
Улучшения в редакторе кода
Новые иконки в редакторе не только подскажут, какие методы были переопределены, но и помогут в один клик перейти от одного такого метода к другому.
![](https://habrastorage.org/webt/gq/ly/8y/gqly8y3wlqoafc5samckm0u6_qo.gif)
Complete Current Statement автоматически вставляет запятую в составных литералах (структуры, словари и пр.) и ставит курсор на позицию следующего утверждения.
![](https://habrastorage.org/webt/kr/hq/2v/krhq2vk4spmgggslq7d3honl3oo.gif)
В GoLand 2018.3 можно определить набор файлов, к которым не будут применяться действия Reformat code, Optimize imports, и Rearrange.
![](https://habrastorage.org/webt/f5/oz/pj/f5ozpjygaf_nz2oqql8zas_dq8i.png)
IDE поддерживает многострочные TODO комментарии для файлов на Go, JavaScript, TypeScript, CSS, и SCSS.
![](https://habrastorage.org/webt/8v/y1/bg/8vy1bgofz4xzusvyjhgsktkwfs8.png)
Система контроля версий
Интеграция с Git теперь отображает запросы на проверку изменений для репозитория в новом окне — GitHub Pull Requests, а также поддерживает Git submodules.
![](https://habrastorage.org/webt/le/ef/ly/leeflyi37bd2suqpf7kjkrvis-c.gif)
Доступность
Мы добавили новую высококонтрастную тему, и улучшили поддержку программ для чтения с экрана.
![](https://habrastorage.org/webt/sz/wn/8k/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.
![](https://habrastorage.org/webt/wd/f3/kt/wdf3ktg1y4pepbrtqrwiqkjvkvw.png)
Kubernetes плагин
Автодополнение кода, Rename рефакторинг, инспекции кода и быстрые исправления работают в шаблонах Helm.
![](https://habrastorage.org/webt/47/-q/7g/47-q7grjapzqeee89euhxwrnqaw.png)
Другие изменения
- Действие Attach теперь есть в меню Open Project, что позволяет добавить каталог прямо во время открытия нового проекта.
- Теперь можно открыть проект, перетащив его в окно приветствия.
- Activity Monitor показывает, сколько ресурсов процессора потребляют различные подсистемы и плагины: Help | Activity Monitor.
- Поиск и обновление плагинов в IDE стал более удобным. Страница плагинов поддерживает поиск по тегам и сортировку результатов по загрузкам, имени, рейтингу, рекомендованным или обновленным.
- Индексирование проектов происходит значительно быстрее.
Все! Как всегда, мы будем рады услышать ваше мнение: пишите нам здесь в комментариях, в Twitter или баг-трекере :)
Скачать обновление можно на странице загрузки или через приложение Toolbox App.
На всякий случай напоминаю, что если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там: просто установите этот плагин.
Спасибо за внимание!
Комментарии (12)
MicroSDA
01.12.2018 15:08IDE достаточно хорошая я бы сказал без альтернативная, но почему у вас нет комьюнити версии?
GnuriaN
01.12.2018 18:53Я думаю, что все хотят кушать. А вот получить, легально все продукты JetBrains можно "почти" без проблем, не платя денег, но портатить немного времени.
MicroSDA
01.12.2018 22:41Я думаю, что все хотят кушать.
Безусловно вы правы, но версия с урезанным функционалом, не для коммерческого использования и обучения я думаю не помешала бы этому.artspb
02.12.2018 20:25Зачем с урезанным? Студенты и OSS-проекты могут бесплатно получить полноценные лицензии.
mr_tron
Github pull requests это крутая фича, но воспользоваться невозможно при включеной двухфакторной аутенфикации. А разработчиков без двухфакторной аутенфикации надо бить.
katezharova Автор
Расскажите, пожалуйста, почему невозможно?
mr_tron
Ну потому что пишет, что логин-пароль не верные.
katezharova Автор
Любопытно, где и что именно пишет? Я к тому, что все должно работать, нужно от вас больше деталей.
mr_tron
ок. счас заведу issue.
katezharova Автор
Спасибо! Еще лучше будет, если вы и лог туда приложите.
vitvakatu
Пользуюсь 2ФА, никаких проблем в последней IDEA