Привет, Хабр! На прошлой неделе вышла новая версия GoLand 2018.3.




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


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


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


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


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


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


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


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




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


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




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




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


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


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




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


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


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


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


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




Поддержка Testify


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


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




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


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


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




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




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




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


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


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




Intention actions


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




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




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




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


Отладчик


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




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


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




Mozilla rr


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


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




Диаграммы


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


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



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


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




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




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


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




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




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




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




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


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




Доступность


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




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.




Kubernetes плагин


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




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


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

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


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


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


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

Комментарии (12)


  1. mr_tron
    30.11.2018 19:07

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


    1. katezharova Автор
      30.11.2018 19:31

      Расскажите, пожалуйста, почему невозможно?


      1. mr_tron
        30.11.2018 19:32

        Ну потому что пишет, что логин-пароль не верные.


        1. katezharova Автор
          30.11.2018 19:38

          Любопытно, где и что именно пишет? Я к тому, что все должно работать, нужно от вас больше деталей.


          1. mr_tron
            30.11.2018 19:41
            +1

            ок. счас заведу issue.


            1. katezharova Автор
              30.11.2018 19:49

              Спасибо! Еще лучше будет, если вы и лог туда приложите.


            1. vitvakatu
              01.12.2018 00:47

              Пользуюсь 2ФА, никаких проблем в последней IDEA


  1. MicroSDA
    01.12.2018 15:08

    IDE достаточно хорошая я бы сказал без альтернативная, но почему у вас нет комьюнити версии?


    1. artspb
      01.12.2018 15:16

      Спасибо! Скажите, а почему она у нас должна быть?


    1. GnuriaN
      01.12.2018 18:53

      Я думаю, что все хотят кушать. А вот получить, легально все продукты JetBrains можно "почти" без проблем, не платя денег, но портатить немного времени.


      1. MicroSDA
        01.12.2018 22:41

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


        1. artspb
          02.12.2018 20:25

          Зачем с урезанным? Студенты и OSS-проекты могут бесплатно получить полноценные лицензии.