Как стать автором
Обновить
0
JetBrains
Делаем эффективные инструменты для разработчиков

AppCode 2019.2: Swift 5.1, анализ покрытия кода тестами, отображение дизассемблированного кода и другое

Время на прочтение4 мин
Количество просмотров4.2K

Астрологи объявили неделю релизов в JetBrains, количество публикаций в блоге выросло втрое! На самом деле, это тоже релизный пост, так что если вы участвовали в EAP, вы уже обо всем знаете.


Если нет — обязательно заходите под кат, потому что в этом релизе у нас не только появился анализ покрытия кода тестами и отображение дизассемблированного кода, но еще и поддержка DSL на Ruby и куча прочего интересного!


Run With Coverage



Swift


Поддержка языка


Начали поддерживать Swift 5.1:


  • SE-0242: Synthesize default values for the memberwise initializer.
  • SE-0254: Static and class subscripts.
  • SE-0068: Expanding Swift Self to class members and value types.
  • SE-0260: Library Evolution for Stable ABIs.
  • SE-0258: Property Wrappers

Пока в процессе, степень готовности можно смотреть вот тут.


Сворачивание кода


Сделали сворачивание замыканий:


Closure folding


Подсветка


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


Keywords


Генерация элементов перечислений


Продолжаем расширять области применения Create From Usage: теперь можно создать элемент перечисления из его использования в коде, просто нажав ⌥⏎:


Create From Usage


Поиск использований


Поиск использований в AppCode ищет конкретные кодовые конструкции (переменные, классы, функции, методы класса и т. д.) — это позволяет сильно сузить область поиска в сравнении с полнотекстовым. До недавнего времени для Swift мы отображали лишь где используется конкретная конструкция. В 2019.2 мы реализовали группировку использований по типу, так что теперь можно быстро понять еще и как мы используем переменную, функцию или класс:


Find Usages


Склейка строк кода


Ничего особенного, просто теперь можно склеить объявление и инициализацию переменной с помощью Join Lines (⌃⇧J):


Join Lines


Автоматические импорты


Есть такая система сборки — BUCK. Система сборки BUCK по умолчанию использует header maps, поддержку которых мы год назад добавили, но не успели прокинуть ее же в автоимпорты. В результате, после нажатия ⌥⏎ вставлялся длиннющий путь к хедеру, который абсолютно не нужен. Теперь так не происходит, теперь все правильно.


Отладка


Отображение дизассемблированного кода


Коллеги из CLion сделали отображение дизассемблированного кода для LLDB в версии 2019.1, а мы его творчески переиспользовали в этом релизе:


Disassembly View


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


Еще одна полезная штука, изначально сделанная в CLion, — автодополнение команд отладчика в консоли LLDB по нажатию ⇥ (так же, как в обычной консоли):


LLDB commands completion


Анализ покрытия кода тестами


Наконец-то сделали, и сделали хорошо. Выбираем тестовую конфигурацию, жмем Run With Coverage и уходим дорабатывать тесты радуемся результату:


Run With Coverage


Слева в редакторе отображаются результаты покрытия:


Coverage Results


По нажатию на цветовой индикатор показывается плашка с количеством вызовов данного участка кода и полезными действиями:


Hit Count


Статистика покрытия отображается кратко в Project view, а более подробно — в отдельном окне:


Toolwindows


Сборка, запуск, отладка и тестирование во время индексации


Индексация и построение кэшей — небыстрый процесс, особенно на крупных проектах и особенно самая первая индексация. Тем не менее какие-то действия с проектом, пока она идет, сделать можно, например собрать или запустить приложение.


У нас долгое время эти действия блокировались, потому что для нормального использования конфигурации запуска необходимо было сначала построить кэши на проект. На самом деле, не так уж и необходимо, поэтому в версии 2019.2 мы решительно отвязали создание конфигураций запуска от кэширования, и теперь собрать, запустить, отладить или протестировать проект можно сразу же после его открытия:


Build, Run, Debug and Test during indexing


Интеграции


Плагин TextMate


Часто просят добавить поддержку какого-нибудь языка, который для AppCode не является основным. Иногда мы это делаем, если понимаем, что это действительно нужно многим пользователям, — так в какой-то момент мы перетянули к себе часть WebStorm, чтобы разработчикам на React Native и PhoneGap было удобно работать с HTML/CSS/JavaScript.


Потом появился плагин для Markdown, потому что любой README нужно иметь возможность удобно и быстро отредактировать. Еще есть плагин для AppleScript, сделанный одним из коллег просто потому, что ему ему было интересно написать поддержку языка.


Но впихнуть объять необъятное нельзя, поэтому реализовать поддержку всех языков мы не можем. Например, в iOS-разработке часто встречаются DSL, сделанные на Ruby (конфиги CocoaPods и Fastlane). Изначально запрос звучал как “включите поддержку Ruby целиком”, но на деле не так часто эти конфиги редактируются, и тащить из-за них пол-RubyMine не кажется разумным. В то же время, не иметь никакой поддержки тоже нехорошо.


В этом релизе коллеги из WebStorm включили в дефолтную установку плагин с поддержкой бандлов TextMate, который дает для кучи языков простенькую подсветку и автодополнение. Мы последовали их примеру, и теперь у нас это тоже есть:


TextMate Bundles Plugin


В силу некоторых противоречий в поддержке Fastlane со стороны самих этих бандлов, для Ruby DSL принцип конфигурации пока остается прежним (впрочем, можно поспособствовать исправлению этой ситуации).


Плагин Shell Script


В проектах скрипты встречаются часто, поэтому мы подключили поддержку их редактирования:


Shell Script Plugin


Окно Commit


Точнее, больше нет никакого отдельного окна — теперь оно стало частью вкладки Local Changes:


Commit Window


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


Команда AppCode

Теги:
Хабы:
Всего голосов 15: ↑15 и ↓0+15
Комментарии21

Публикации

Информация

Сайт
jetbrains.com
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Чехия

Истории