Что нового в RubyMine 2021.3

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

Ruby и RBS

Встроенные сигнатуры RBS

В новой версии появились встроенные сигнатуры RBS. Благодаря этому RubyMine предлагает улучшенную помощь в написании кода: проверку типов в реальном времени, более точную навигацию, поиск и рефакторинг, а также многое другое.

Новые инспекции для RBS-файлов

Готовя этот релиз, мы добавили 12 новых инспекций для RBS-файлов. Теперь RubyMine проверяет RBS-код на стилистические ошибки, ищет неиспользуемые объекты, проблемы наследования, несоответствия в частичных объявлениях и т. п.

Кроме того, для RBS-файлов теперь работает встроенная проверка орфографии RubyMine.

Информация о параметрах на основе RBS

Во всплывающем окне Parameter Info (Ctrl+P) отображаются имена и типы параметров методов. Теперь там используется информация из соответствующих сигнатур RBS (если они есть).

Информация об авторских правах для RBS-файлов

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

Запуск RuboCop при сохранении

Теперь RuboCop можно настроить так, чтобы он переформатировал файлы при ручном или автоматическом сохранении любых изменений. Чтобы включить эту функцию, найдите rubocop в меню Preferences / Settings и поставьте флажок Run ‘rubocop -a’ on save.

Проверка типов

Новые инспекции для проверки типов RBS

Мы добавили несколько новых инспекций для выявления несоответствий между присвоенными значениями и ожидаемыми типами, полученными из RBS.

Инспекции проверяют типы констант, переменные экземпляров и классов, параметры методов и блоков, возвращаемые значения, аргументы, переданные вызовам yield, а также глобальные переменные. Перейти к ним можно через меню Preferences / Settings | Editor | Inspections | Ruby.

Начальная поддержка Sorbet

RubyMine 2021.3 распознает сигнатуры Sorbet, в том числе в файлах .rbi. Теперь инспекции несоответствия типа для аргументов методов и возвращаемых значений могут работать на основе Sorbet.

Для переключения между соответствующими файлами Ruby и RBI используйте действия Go To | Type Signature / Associated Declaration в контекстном меню. Можно также использовать сочетание клавиш Ctrl+Alt+Home.

Удаленная разработка

Поддержка удаленной разработки

Новая версия RubyMine поддерживает начальные возможности удаленной разработки. Вы можете откуда угодно подключиться к удаленной машине, на которой запущен бэкенд RubyMine. Вся обработка данных выполняется на мощной удаленной машине, а вы работаете над проектом, как будто он размещен локально.

Взаимодействие с IDE

Оптимизация производительности

Готовя новую версию, мы стремились улучшить производительность редактора кода. Теперь открытие файлов, ввод, вызов автодополнения и применение быстрых исправлений работают быстрее.

Это будет не очень заметно при редактировании файлов среднего размера, зато сразу видно на больших файлах (от 2000 строк кода).

Окно Bookmarks

Мы переработали функциональность закладок. Теперь можно самостоятельно давать имена закладкам и объединять их в узлы. Все закладки в новой версии размещаются в новом окне Bookmarks (Alt+2).

Разделение окна Run

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

Просто перетащите нужную вкладку в выделенную область. Чтобы убрать разделение окна, можно перетащить вкладку обратно или щелкнуть правой кнопкой на верхней панели и выбрать в контекстном меню команду Unsplit.

Предпросмотр исходного кода в окне Show Usages

В новой версии можно включить предпросмотр исходного кода, нажав на квадратный значок в окне Show Usages (Ctrl+Alt+F7).

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

Функция Checkout and Rebase onto Current для удаленных веток

Функция Checkout and Rebase onto Current позволяет извлечь выбранную ветку и переместить ее на вершину ветки, в которой вы находитесь. До сих пор эта функция работала только с локальными ветками, но в новой версии действие можно применять и к удаленным веткам.

Новое окно Changes

Начиная с этой версии RubyMine будет отображать данные коммитов и различия между коммитами в отдельном окне Changes. Оно находится слева от редактора.

Чтобы открыть новое окно, перейдите на вкладку Log системы контроля версий, правой кнопкой нажмите на нужную версию и выберите в контекстном меню пункт Compare with local.

Новое действие Push All up to Here

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

Веб-разработка и фреймворки

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

Мы улучшили работу автодополнения в HTML-файлах. Раньше варианты автодополнения появлялись, только когда вы вводили символ <. Начиная с этой версии, предложения будут появляться также при вводе имени тега или сокращения.

Обновление npm-пакетов из редактора

Теперь обновить npm-пакеты до новой версии можно прямо из редактора. Откройте файл package.json, установите курсор на версию пакета, который нужно обновить, нажмите Alt+Enter и выберите Update ‘имя пакета’ to the latest version.

Улучшения HTTP-клиента

Мы добавили поддержку ответов в виде двоичного кода, запросы gRPC, перенаправление вывода в заданный файл или директорию, поддержку текстовых потоков и потоков JSON, а также поддержку идентификаторов HTTP-запросов.

Space

Merge-реквесты и код-ревью из IDE

Новая версия позволяет создавать merge-реквесты и код-ревью для проектов в Space прямо из IDE. Чтобы вызвать эти действия, нажмите на значок + на верхней панели инструментов в окне Code Reviews.

Возможность пометить файл как просмотренный

Во время ревью кода файлы, которые вы еще не открывали, отмечены синими точками. Благодаря этому вы не пропустите изменения в проектах Space во время ревью.

После открытия файла точка автоматически исчезает. Если вы хотите проверить изменения позже, воспользуйтесь опцией Mark as Not Viewed из контекстного меню.

Инструменты для работы с базами данных

База данных в системе контроля версий

В новой версии источник данных DDL можно создать на основе обычного, а затем синхронизировать их друг с другом, выбрав любой в качестве исходного.

Режим просмотра Aggregate

Мы добавили возможность выбрать режим Aggregate для просмотра диапазона ячеек. Просто выберите нужные ячейки, щелкните правой кнопкой мыши и нажмите Show Aggregate View.

Новое окно сравнения баз данных

Теперь для сравнения двух схем или объектов можно использовать новое окно сравнения БД: просто выберите то, что хотите сравнить, и нажмите Ctrl+D.

Автоматическое определение первой строки как заголовка

Начиная с этой версии, при открытии и импорте CSV-файла RubyMine автоматически определит, является ли первая строка заголовком, содержащим названия столбцов.

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

  • Инструмент чтения с экрана теперь работает при создании проекта (IDEA-185260).
  • Отключены всплывающие окна виджета окна (IDEA-278151) и быстрого просмотра документации (IDEA-274143), появлявшиеся при наведении мыши.
  • Исправлена ошибка вызова всплывающего окна Go To Declaration or Usages (IDEA-272536).
  • Исправлен ряд ошибок, связанных с фокусом VoiceОver (IDEA-273021).
  • Проверка типов, инспекции несоответствия аргументов и вызов информации о параметрах теперь работают для вызовов super в переопределенных методах.
  • Добавлена поддержка rest-параметров RBS (параметров переменной длины) среди других параметров.
  • Теперь переключаться между перегруженными методами в RBS-файлах можно с помощью новых иконок на полях редактора.
  • Чтобы создать новый RBS-файл, содержащий окружающие модули, можно использовать в имени символ ::.
  • Теперь, чтобы найти методы с помощью Search | Symbols, можно использовать формат Класс#метод.
  • Новая версия RubyMine поддерживает переменные и атрибуты, встречающиеся в одном экземпляре, и обеспечивает для них проверку типов и подсказки.
  • Структура настроек системы контроля версий стала более аккуратной.
  • Исправлен ряд ошибок, связанных с сопоставлением файлов .js и .d.ts, добавлены иконки на полях редактора для переключения между ними.
  • Добавлена поддержка удаленного интерпретатора Node.js для npm, ESLint, Mocha и Jest.
  • Время индексирования JavaScript-файлов сократилось на 20%.
  • Теперь удаленные модули ES6 можно скачать прямо из редактора: поместите курсор на путь импорта, нажмите Alt+Enter и выберите Download module.
  • Встроенный терминал теперь поддерживает новый API ConPTY для Windows. Используя его в качестве бэкенда терминала, мы смогли устранить несколько проблем, возникавших у пользователей раньше, когда мы использовали консоль winpty. Кроме того, это позволило обеспечить поддержку 24-разрядного цвета в терминале.
  • В новой версии мы добавили во встроенный терминал поддержку опережающего ввода. Она позволяет предугадывать изменения в тексте, и они сразу отображаются слегка измененным шрифтом. Это может быть удобно при работе на удаленной машине: IDE будет выводить символы так же быстро, как делала бы это на локальной машине, несмотря на задержку.