Хабрахабр

Что нового в AppCode 2018.1

Привет!

1. Этот пост, конечно же, про AppCode 2018. У нас много нового и полезного, все в картинках под катом. Впрочем нет, в этот раз он еще и про первый апдейт.

Splash

Swift 4.1

1: Мы реализовали поддержку большей части Swift 4.

  • SE-0185 (Synthesizing Equatable and Hashable conformance)
  • SE-0143 (Conditional conformances)
  • SE-0190 (Target environment platform condition):Target environment platform condition
  • SE-0075 (Build Configuration Import Test):Build Configuration Import Test
  • SE-0186 (Remove ownership keyword support in protocols)

0 мы в основном сделали в AppCode 2017. Swift 4. Если интересно, как мы движемся к светлому будущему поддержке Swift 4. 3. 0, подписывайтесь на этот тикет и его следующие шаги. 2 и 5.

Неявно подключенные модули

Если подключен UIKit, значит автоматически подключены, например, CoreGraphics и Dispatch. Здесь стоит пояснить на примере. Логика подсказывает, что оба модуля должны быть явно импортированы где-то внутри UIKit. Все символы из этих библиотек должны быть доступны. Но если мы просто рекурсивно пройдемся по всему дереву подключенных к UIKit модулей, ни одного импорта мы не найдем.

Потому что все они подключены в версии UIKit на Objective-C, а в Swift они пробрасываются неявно. Почему? Думаю, можно даже не объяснять, насколько сильно это отражалось на работе IDE. AppCode строит автодополнение и навигацию исходя из дерева символов — нужных символов нет — нет ни автодополнения, ни навигации для таких библиотек без явного импорта.

В этом релизе мы все поправили:

Implicit modules

Попутно улучшили навигацию с автодополнением для некоторых сторонних библиотек (например, Firebase и PureLayout).

Поддержка RxSwift

В AppCode 2018. В основе RxSwift лежит конструкция, описанная вот тут. 1 мы научились ее корректно обрабатывать, что принесло счастливым пользователям нормальное автодополнение и навигацию:

RxSwift support

Всем, кто помогал нам в канале #appcode-users в слэке RxSwift, — спасибо! Часть проблем остается, мы над ними продолжаем работать.

Поддержка Quick

Сделали правильное и удобное отображение тестов:

Quick hierarchy

Реализовали навигацию к конкретному месту в тесте:

Quick navigation

А вот для обычных тестов на XCTest, а также Kiwi, Catch, Boost. Для Objective-C то же самое пока не сделали, перезапуск неудачных тестов пока сделать нельзя. Test и Google Test эта фича работает, вместе с кучей других.

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

Добавили несколько новых настроек в Preferences | Editor | Code Style | Swift | Code Generation для форматирования комментариев:

Comments settings

Поправили отображение многострочных комментариев в попапе Quick Documentation (F1):

Multiline comments

Улучшили трансляцию Objective-C/Swift:

  • Стали правильно преобразовывать типы Class и SEL/IMP, generic pointers и некоторые типы параметров отсюда из Objective-C в Swift.
  • Рефакторинг Rename и Find Usages стали работать для свойств Swift-классов, используемых в Objective-C.

Еще ускорили работу Go to class/symbol в проектах со смешанным кодом и наконец-то поправили проблемы с OCMock.

Про улучшения поддержки C/C++ можно прочитать в посте @anastasiak2512 в разделе Поддержка языка C++, отличий в этой части между AppCode и CLion почти нет.

1. Пока писали пост, вышла версия  AppCode 2018. В ней добавили поддержку Xcode header maps, что автоматически сделало построение символов для массы проектов (в частности, для сгенеренных с помощью BUCK) более корректным. 1.

1 мы ее поддержали у себя. В Xcode 9 добавили беспроводную отладку, а в AppCode 2018. Теперь, если настроить устройство в Xcode, AppCode его тоже покажет и даст на нем отлаживаться и запускать приложение.

Добавили настройки для симуляции местоположения в Run/Debug Configurations:

Location in the Run Configuration

Реализовали поддержку смены местоположения при запуске и отладке приложения:

Change location on the fly

Поддержали настройки для мест, определенных пользователем:

Custom locations

Стали автоматически обрабатывать .gpx-файлы как XML:

XML assistance

У проектного дерева в AppCode было два режима отображения:

  • Project (показывает все файлы в составе проекта Xcode)
  • Files (все файлы в директории, в которой находится проектный файл, и связанные директории вроде DerivedSources)

Нужно изменить какой-нибудь README.md или скрипт — переключился, открыл, отредактировал, вернулся к написанию кода. Files view сильно облегчает работу с проектом. Учитывая количество плагинов для различных языков, это удобно.

Например, чтобы отображать только часть файлов в Project view или чтобы ограничить область работы инспекций / поиска. Project и Files — это частный случай Project Scopes, дающих возможность отфильтровать произвольное подмножество проектных файлов.

Теперь большинство стандартных фильтров можно использовать в AppCode:

Standard scopes

  • Project Source Files — все файлы в составе проекта Xcode.
  • Project Non-Source Files — все файлы из директории с проектным файлом, не включенные в состав проекта Xcode.
  • Changed Files — отображается в списке фильтров, только если в проекте включен контроль версий, и включает в себя все измененные файлы.
  • Default — включает в себя все файлы из дефолтного списка изменений (пользовательские списки тоже показываются):Custom changelists

В Preferences | Appearance & Behavior | Scopes можно создавать свои фильтры:

Custom scope

В Preferences | Appearance & Behavior | File Colors для каждого фильтра можно выставить свой цвет при отображении в режиме Files:

Scole colors

В этом релизе проработали наиболее очевидное:

  • Стали автоматически выставлять больше настроек при выборе варианта Xcode на экране настройки темы и поведения IDE (показывается при самом первом запуске IDE).
  • Провели первую итерацию доработки раскладки Xcode.
  • Улучшили импорт цветовых схем и немного доработали встроенную цветовую схему Xcode.

Если у вас есть идеи улучшений по каждому из пунктов, стоит сразу же создавать тикет в нашем трекере и прикладывать к нему свои настройки экспортированные с помощью File → Export Settings...

  • Добавили сворачивание управляющих конструкций if/else, do/while, for, switch в Objective-C/C/C++ (⇧⌘.).
  • Переработали все встроенные цветовые схемы, добавили несколько платформенных (например, Github):
  • Стало возможным включать в Git-коммиты лишь часть изменений.

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

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть