- PVSM.RU - https://www.pvsm.ru -
Астрологи объявили неделю релизов в JetBrains, количество публикаций в блоге выросло втрое! На самом деле, это тоже релизный пост, так что если вы участвовали в EAP, вы уже обо всем знаете.
Если нет — обязательно заходите под кат, потому что в этом релизе у нас не только появился анализ покрытия кода тестами и отображение дизассемблированного кода, но еще и поддержка DSL на Ruby и куча прочего интересного!
Начали поддерживать Swift 5.1:
Self
to class members and value types.Пока в процессе, степень готовности можно смотреть вот тут [6].
Сделали сворачивание замыканий:
Нельзя так просто взять и подсветить строчку кода, не зная, с какими конкретно сущностями мы имеем дело. Поэтому полная подсветка возможна лишь после полного построения кэшей. А вот ключевые слова языка мы знаем заранее и подсветить их можем — теперь они для Swift подсвечиваются, даже если индексация с кэшированием еще не закончились:
Продолжаем расширять области применения Create From Usage: теперь можно создать элемент перечисления из его использования в коде, просто нажав ⌥⏎:
Поиск использований в AppCode ищет конкретные кодовые конструкции (переменные, классы, функции, методы класса и т. д.) — это позволяет сильно сузить область поиска в сравнении с полнотекстовым. До недавнего времени для Swift мы отображали лишь где используется конкретная конструкция. В 2019.2 мы реализовали группировку использований по типу, так что теперь можно быстро понять еще и как мы используем переменную, функцию или класс:
Ничего особенного, просто теперь можно склеить объявление и инициализацию переменной с помощью Join Lines (⌃⇧J
):
Есть такая система сборки — BUCK [7]. Система сборки BUCK по умолчанию использует header maps, поддержку которых мы год назад добавили [8], но не успели прокинуть ее же в автоимпорты. В результате, после нажатия ⌥⏎ вставлялся длиннющий путь к хедеру, который абсолютно не нужен. Теперь так не происходит, теперь все правильно.
Коллеги из CLion сделали [9] отображение дизассемблированного кода для LLDB в версии 2019.1, а мы его творчески переиспользовали в этом релизе:
Еще одна полезная штука, изначально сделанная в CLion, — автодополнение команд отладчика в консоли LLDB по нажатию ⇥ (так же, как в обычной консоли):
Наконец-то сделали, и сделали хорошо. Выбираем тестовую конфигурацию, жмем Run With Coverage и уходим дорабатывать тесты радуемся результату:
Слева в редакторе отображаются результаты покрытия:
По нажатию на цветовой индикатор показывается плашка с количеством вызовов данного участка кода и полезными действиями:
Статистика покрытия отображается кратко в Project view, а более подробно — в отдельном окне:
Индексация и построение кэшей — небыстрый процесс, особенно на крупных проектах и особенно самая первая индексация. Тем не менее какие-то действия с проектом, пока она идет, сделать можно, например собрать или запустить приложение.
У нас долгое время эти действия блокировались, потому что для нормального использования конфигурации запуска необходимо было сначала построить кэши на проект. На самом деле, не так уж и необходимо, поэтому в версии 2019.2 мы решительно отвязали создание конфигураций запуска от кэширования, и теперь собрать, запустить, отладить или протестировать проект можно сразу же после его открытия:
Часто просят добавить поддержку какого-нибудь языка, который для AppCode не является основным. Иногда мы это делаем, если понимаем, что это действительно нужно многим пользователям, — так в какой-то момент мы перетянули к себе часть WebStorm, чтобы разработчикам на React Native и PhoneGap было удобно работать с HTML/CSS/JavaScript.
Потом появился плагин для Markdown [10], потому что любой README нужно иметь возможность удобно и быстро отредактировать. Еще есть плагин для AppleScript [11], сделанный одним из коллег просто потому, что ему ему было интересно написать поддержку языка.
Но впихнуть объять необъятное нельзя, поэтому реализовать поддержку всех языков мы не можем. Например, в iOS-разработке часто встречаются DSL, сделанные на Ruby (конфиги CocoaPods и Fastlane). Изначально запрос звучал как “включите поддержку Ruby целиком”, но на деле не так часто эти конфиги редактируются, и тащить из-за них пол-RubyMine не кажется разумным. В то же время, не иметь никакой поддержки тоже нехорошо.
В этом релизе коллеги из WebStorm включили в дефолтную установку плагин с поддержкой бандлов TextMate, который дает для кучи языков простенькую подсветку и автодополнение. Мы последовали их примеру, и теперь у нас это тоже есть:
В силу некоторых противоречий в поддержке Fastlane со стороны самих этих бандлов, для Ruby DSL принцип конфигурации пока остается прежним (впрочем, можно поспособствовать исправлению [12] этой ситуации).
В проектах скрипты встречаются часто, поэтому мы подключили поддержку их редактирования:
Точнее, больше нет никакого отдельного окна — теперь оно стало частью вкладки Local Changes:
На этом закончим. Все вопросы и пожелания пишите прямо тут в комментариях — будем рады ответить!
Команда AppCode
Автор: yeswolf
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/325771
Ссылки в тексте:
[1] SE-0242: https://github.com/apple/swift-evolution/blob/master/proposals/0242-default-values-memberwise.md
[2] SE-0254: https://github.com/apple/swift-evolution/blob/master/proposals/0254-static-subscripts.md
[3] SE-0068: https://github.com/apple/swift-evolution/blob/master/proposals/0068-universal-self.md
[4] SE-0260: https://github.com/apple/swift-evolution/blob/master/proposals/0260-library-evolution.md
[5] SE-0258: https://github.com/apple/swift-evolution/blob/master/proposals/0258-property-wrappers.md
[6] тут: https://youtrack.jetbrains.com/issue/OC-18443
[7] BUCK: https://buck.build/
[8] добавили: https://blog.jetbrains.com/objc/2018/04/appcode-2018-1-1/
[9] сделали: https://habr.com/ru/company/JetBrains/blog/445646/
[10] Markdown: https://plugins.jetbrains.com/plugin/7793-markdown
[11] AppleScript: https://plugins.jetbrains.com/plugin/8149-applescript-support
[12] поспособствовать исправлению: https://youtrack.jetbrains.com/issue/OC-13269#focus=streamItem-27-3574361.0-0
[13] Источник: https://habr.com/ru/post/461949/?utm_campaign=461949&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.