- PVSM.RU - https://www.pvsm.ru -

Что нового в AppCode 2018.3

Добавили поддержку Swift 4.2, сделали Generate и навигацию к определению типа для Swift, улучшили форматирование, поддержали iOS-расширения в отладчике, стали лучше работать в проектах с несколькими таргетами, и еще сделали кучу крутых и полезных фич.

КПДВ

Swift

Поддержали все возможности версии 4.2, которые могли отразиться на работе IDE:

  • SE-0192 [1] (Handling Future Enum Cases)
  • SE-0193 [2] (Cross-module inlining and specialization)
  • SE-0194 [3] (Derived Collection of Enum Cases)
  • SE-0195 [4] (User-defined “Dynamic Member Lookup” Types)
  • SE-0196 [5] (Compiler Diagnostic Directives)
  • SE-0212 [6] (Compiler Version Directive)

Если что-то все-таки пропустили, обязательно напишите в комментариях. А про Swift 5 можно прочитать тут [7].

Генерация

Сделали все стандартные действия для генерации, которые есть для Objective-C — инициализаторы, description/debugDescription, hashValue и оператор сравнения:

Генерация

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

Навигация к определению типа

Тут все просто — жмем ⇧⌘B и сразу попадаем к определению типа:

Навигация к определению типа

Подсветка точек выхода

Научились подсвечивать точки выхода по установке курсора на break, continue, try, throw или return:

Подсветка точек выхода

Форматирование

Почти в каждом релизе мы улучшаем что-то в движке форматирования, вот что успели в этом:

  • поправили формирование отступов для многострочных строковых литералов: Форматирование строковых литералов
  • добавили настройки форматирования кода внутри препроцессорных директив:Настройки препроцессорных директив
  • сделали возможность менять выравнивание выражений с тернарным оператором в Preferences | Editor | Code Style | Swift | Wrapping and Braces | Ternary conditional operation

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

С CLion у нас не только общая поддержка C/C++, но еще и общая поддержка Swift. Долгое время плагин, который добавляет поддержку SPM-проектов в CLion, использовал CMake в качестве проектной модели. В этом году решили, что жить так больше нельзя — пользоваться неудобно, и поддержали SPM напрямую. Теперь можно работать вот так:

Получилось действительно хорошо, осталось только доработать интеграцию с тестами. А учитывая тот факт, что в CLion есть функциональность WebStorm для редактирования HTML/JavaScript, с базами данных можно работать так же, как и в DataGrip [8], доступен Docker-плагин [9] и многое другое, получаем, что теперь в нем еще можно писать бэкенды на Swift:

Нет, с SourceKit-LSP пока работать не планируем. Причина проста: и так почти все есть, что он несет с собой (и то, что еще не несет, тоже).

Objective-C/C/C++

Проекты с несколькими таргетами

Наконец-то починили проблемы с подсветкой и автодополнением для классов с одним и тем же именем подключенным к разным таргетам в проекте. Навигацию [10] тоже планируем починить.

Change Signature

Раньше при изменении сигнатуры в C/C++ AppCode терял дефолтные значения аргументов — а теперь обрабатывает их корректно:

Change Signature

Документация

Стали нормально форматировать макроподстановки в Quick Documentation (F1):

Форматирование макроподстановок

Многострочные TODO

В AppCode все комментарии вида //FIXME / //TODO можно быстро посмотреть через ⌘6. Здесь же можно задать шаблоны для своих сообщений, что бывает удобно:

Настройки TODO

Теперь мы добавили поддержку многострочных TODO для Objective-C/C/C++ — достаточно для каждой строки, кроме первой, добавить отступ:

Многострочные TODO

Смешанный код

Поправили проблемы при переименовании конструкций с swift_name в Objective-C и перечислений в Swift / Objective-C.

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

Починили фризы при вызове диалогов, связанных с запуском тестов, например Run Configurations с тестовыми конфигурациями.

Запуск и отладка

Расширения iOS

AppCode научился отлаживать расширения iOS — так же, как это делает Xcode:

Поддержка расширений iOS

Консоль LLDB для Swift

Починили автодополнение в консоли отладчика для Swift (для Objective-C/C/C++ все и так работало). Все сторонники p/po и expression радуются, остальные, как и раньше, пользуются Evaluate Expression (⌥F8):

Автодополнение в консоли LLDB

Плагин IDE Features Trainer

IDE Features Trainer

Часто слышим на конференциях просьбу дать материалы о миграции с Xcode на AppCode, о том, какие возможности IDE надо знать в первую очередь. В процессе релиза сделали первый крупный шаг в эту стороны — добавили часть для Swift в IDE Features Trainer. Суть простая — ставим плагин, открываем уроки, следуем инструкциям и на простых примерах видим, какие возможности есть, как их использовать, и где их найти. Всем рекомендуем пройти — даже если пользуетесь IDE уже давно. С большой вероятностью, что-то новое и полезное все равно найдется :).

IDE

Search Everywhere

Объединили Search Everywhere, Go to Class / File / Symbol / Action:

Search Everywhere

Run Anything

Теперь любую конфигурацию можно запустить через двойное нажатие ⌃:

Run Anything

Или открыть проект, напечатав open.

Плагины

Полностью переработали вид раздела с плагинами в IDE:

Плагины

Контроль версий

Теперь умеем работать с подмодулями Git и удобно показывать пулл-реквесты с Github:

Окно пулл-реквестов для Github

Высококонтрастная тема

Теперь она есть — как для редактора, так и для IDE (можно выбрать в Preferences | Appearance & Behavior | Appearance):

Высококонтрастная тема

Что дальше?

Следующий релиз мы планируем целиком посвятить исправлению проблем. Исключение — поддержка новых версий Swift. В общем, больше стабильности, лучше автодополнение с навигацией и подсветкой, меньше помех работе.

На этом все! Как и всегда, скачивать — тут [11], баги — в трекер [12], вопросы общего характера задаем прямо здесь.

Автор: yeswolf

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ios/301295

Ссылки в тексте:

[1] SE-0192: https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md

[2] SE-0193: https://github.com/apple/swift-evolution/blob/master/proposals/0193-cross-module-inlining-and-specialization.md

[3] SE-0194: https://github.com/apple/swift-evolution/blob/master/proposals/0194-derived-collection-of-enum-cases.md

[4] SE-0195: https://github.com/apple/swift-evolution/blob/master/proposals/0195-dynamic-member-lookup.md

[5] SE-0196: https://github.com/apple/swift-evolution/blob/master/proposals/0196-diagnostic-directives.md

[6] SE-0212: https://github.com/apple/swift-evolution/blob/master/proposals/0212-compiler-version-directive.md

[7] тут: https://youtrack.jetbrains.com/issue/OC-16492

[8] DataGrip: https://habr.com/company/JetBrains/blog/431646/

[9] Docker-плагин: https://plugins.jetbrains.com/plugin/7724-docker-integration

[10] Навигацию: https://youtrack.jetbrains.com/issue/OC-17859

[11] тут: https://www.jetbrains.com/objc/download/

[12] трекер: https://youtrack.jetbrains.com/issues/OC

[13] Источник: https://habr.com/post/432058/?utm_campaign=432058