AppCode 2020.2: поддержка Swift Package Manager, улучшенное быстродействие, Change Signature для Swift и многое другое

от автора

КПДВ — это Change Signature, уже пятый рефакторинг для Swift. Обо всем остальном в новом AppCode 2020.2 — под катом.

Change Signature

Поддержка Swift Package Manager

Мы сделали начальную поддержку SPM-зависимостей в проектах для Xcode, а именно:

  • Отображение зависимостей в окне проекта:SPM-зависимости
  • Автодополнение, подсветку и навигацию для них, плюс некоторые специфичные для SPM-зависимостей возможности, такие как автодополнение таргетов в Package.swift:Автодополнение таргетов

Быстродействие

Мы постоянно работаем над улучшением быстродействия IDE — к примеру, в прошлом релизе получилось ускорить повторное открытие проектов. В версии 2020.2 мы закончили большой кусок работы, переработав механизм индексации. В результате IDE должна стать в целом отзывчивее, а подвисания при открытии проекта или его перезагрузке (например, во время переключений бранчей) должны исчезнуть.

Change Signature

Изменение сигнатуры метода — частая операция. Обычно ее приходится делать с помощью нескольких последовательных рефакторингов переименования, после чего часть работы в любом случае придется делать руками (поменять область видимость, вручную переставить параметры местами и так далее). Теперь AppCode может выполнить все эти действия за один раз — достаточно вызвать рефакторинг Change Signature (⌘F6) на любом использовании метода. Если этот метод был перегружен, можно выбрать, необходимо ли выполнить рефакторинг на базовом методе и перегруженных или только на самом перегруженном методе:

Базовый или перегруженный

В открывшемся диалоге можно переименовать метод, изменить внутренние и внешние имена параметров, а также добавить новые или удалить существующие параметры. При добавлении параметра можно выставить значение по умолчанию, а затем с помощью чекбокса Optional либо оставить значение в сигнатуре метода, либо вставить его во все вызовы метода:

Добавление параметра

Самое простое применение — просто поменять местами пару параметров (⌥↑/⌥↓):

Изменение порядка параметров

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

Одно из самых интересных изменений — это использование SourceKit в автодополнении. В прошлом релизе мы начали использовать его во время индексации, с этого релиза начинаем использовать и после нее, добавляя результаты SourceKit к результатам AppCode. В целом, это должно сделать автодополнение более корректным. Кроме этого, есть пачка небольших, но полезных улучшений:

  • Автодополнение для get, set, didSet, и willSet теперь автоматически ставит курсор внутри тела выражения:
    Автодополнение для get, set, willSet, didSet
  • В режиме Smart теперь показываются конструкторы: Умное автодополнение
  • Заработало такое же, как в Objective-C, автодополнение имен шрифтов: Автодополнение шрифтов
  • Trailing closures стали отображаться в списке автодополнения при наборе {: Trailing closures

Инспекции

На смену старому индикатору инспекций пришел новый доработанный виджет, который отображает количество ошибок и предупреждений в текущем файле и позволяет между ними переключаться. По клику на него открывается окно Problems, отображающее все ошибки и предупреждения в текущем файле списком:

Виджет инспекций

Также в нем можно изменить текущий уровень подсветки файла с помощью выпадающего списка Highlight…

Пулл-реквесты GitHub

Пулл-реквесты GitHub

Как и все IDE от JetBrains, AppCode получил полную поддержку пулл-реквестов GitHub, которая включает в себя следующие возможности:

  • Отображение всей информации по пулл-реквесту (название, автор, переписка и др.) в отдельном окне
  • Полная интеграция работы с ревью: теперь можно прямо из IDE начать или запросить ревью своих изменений, оставить комментарий или отправить изменения на ревью.
  • Merge прямо из IDE.

На этом всё! Все вопросы и пожелания пишите прямо тут в комментариях — будем рады ответить!

Команда AppCode

ссылка на оригинал статьи https://habr.com/ru/company/JetBrains/blog/512976/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *