company_banner

Что нового в AppCode 2018.2

    В этом выпуске: больше новых рефакторингов, лучше автодополнение, поддержка баз данных из DataGrip и даже поддержка Touch Bar. Более подробно — под катом.

    Splash

    Swift


    Извлечение замыканий


    Вслед за извлечением методов мы научились извлекать замыкания. Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через ⌃T + 5:
    Извлечение замыканий

    Сигнатуру замыкания, как и всегда, легко менять:

    Извлечение замыканий

    Переименование


    Убрали диалоги для локального переименования:

    Локальное переименование

    Многое доработали в кросс-языковой части. Теперь можно нормально переименовывать аргументы блоков в Objective-C, имена классов, экспортированных из Objective-C в Swift с помощью атрибута @objc, и элементы перечислений в Swift.

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


    Продолжаем закрывать “элементарные” случаи типов автодополнения. В этот раз добавили автоматическую вставку ‘?’ для опциональных типов:

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

    И параллельно добавляем чуть менее элементарные, вроде автодополнения для атрибутов в Swift:

    Автодополнение атрибутов

    Гензель и Гретель спасены


    Плюс наших хлебных крошек — в том, что птицы их не съедят. Поэтому и Гензель, и Гретель без проблем найдут путь домой:

    Breadcrumbs

    Комментарии для расширений


    В Objective-C категории легко отличить по имени. А вот в Swift имен у расширений (extensions) нет. Поэтому мы добавили в Structure View отображение комментариев из кода расширений в Swift:

    Комментарии в Structure

    Override/Implement


    Исправили генерацию перегрузок / реализаций для полей с одинаковым именем из базовых классов и протоколов, изменяемых свойств (mutable) и опциональных частей протоколов, еще не реализованных в базовом классе:

    Override/Implement

    Intentions


    В AppCode 2017.3 появились действия для добавления / удаления явно указанных типов у переменных, а в AppCode 2018.2 мы реализовали то же самое для циклов:

    Intentions

    Отладка


    Решили проблему с выводом для скриптов на Python (таких как Chisel):

    Chisel

    Платформа выкатила небольшую, но очень удобную фичу — пачку действий для манипуляции с точками останова через ⌥⏎:

    Debugger

    Сообщения сборки


    В этом релизе мы решили, кажется, последнюю действительно крупную проблему с отображением сообщений сборки — стали нормально обрабатывать вывод фазы Run Script:

    Run Script

    Поддержка баз данных


    В AppCode 2018.2 мы включили полную функциональность DataGrip для работы с БД. Вот, кстати, пример для SQLite:


    Со всеми возможностями можно ознакомиться у нас на сайте.

    Touch Bar


    Теперь работает и в AppCode:

    Touch Bar

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


    Как и всегда, множество улучшений добавлено в платформу IntelliJ, и все они теперь доступны в AppCode.

    Интерфейс пользователя


    Самое видимое из изменений — это полностью переработанные в едином стиле иконки:

    Иконки

    Про процесс изменения иконок можно прочитать вот тут.

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

    JetBrains

    387,00

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

    Поделиться публикацией
    Комментарии 21
      –1
      Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через ⌃T + 5:


      Предлагаю добавить киллерфичу с голосовым вводом. Хотя бы по ключевым словам: «дополни», «переименуй», «найди», «раздели» и проч, а то я от силы 1/100 хоткеев помню. Вам бы с Яндексом и их Алисой скооперироваться и будет вообще бомба).

      Ну или можно поступить более тривиально и неинтересно и заменить даблшифт на команду поиска команд, а не обычного поиска (который полностью идентичен набору Ctrl+Shift+A, Ctrl+Shift+N, Ctrl+N, etc).
        0
        Ну или можно поступить более тривиально и неинтересно и заменить даблшифт на команду поиска команд, а не обычного поиска (который полностью идентичен набору Ctrl+Shift+A, Ctrl+Shift+N, Ctrl+N, etc).

        Эмм, так Ctrl+Shift+A — это как раз и есть поиск команд, разве нет? Притом контекстнозависимый.

          0
          Я об этом сочетании узнал только что, когда начал смотреть какие вообще есть сочетания и что-то не подумал об этой логической несостыковочке. Бывает. Последний абзац действительно глупо звучит.

          Основной посыл был в том, что сочетаний клавиш овердохрена.
            0
            Тут как:

            1. Скоро Go to Class/Symbol/File/Search Everywhere/Find action будут объединены в одно окно.

            2. Шорткаты надо учить, как правило они довольно логично выстроены группами. В этом смысле для начала стоит освоить основные группы по генерации / рефакторингам / возможностями редактора. Да, придется потратить время. Но грубо говоря, это X, который потом сэкономит 10X. Допустим, даже элементарное выделение через Expand/Shrink Selection существенно упрощает жизнь. В целом, это верно для любого инструмента разработки.

            3. Активное использование Find Action сильно упрощает их изучение. Можно еще поставить что-нибудь вроде Key Promoter X.
        0
        Был бы очень рад туториалу как использовать AppCode при разработки бэкенда на Swift + Vapor3, потому что самому завести не удалось.
          0
          Это есть в планах. Но так как за время с написания черновика произошли секретные улучшения, о которых говорить нельзя, требуется переработка :).

          А что не получилось завести конкретно? По идее, Xcode-проект для Vapor мы нормально обрабатываем.
            0
            Цель была получить хороший быстрый автокомплит, который недоступен в Xcode когда проект большой.
            В AppCode очень долго минут 20 шла индексация, и в итоге совсем не работал автокомплит:( (MBP2017 15")
              0
              Поподробнее бы понять, с проектом, где и что отвалилось. У меня на тестовых проектах комплит работал нормально. Опять же, встает вопрос — какая версия Xcode / AppCode.
          +1
          Поправьте переходы, когда кликаешь по классу, чтобы перебрасывало в класс, а не в NSObject к методу init()
          0
          Автокомплит для Apollo GraphQL бы завести. А то не показывает все доступные варианты
            0
            Ну так обратитесь к разработчику плагина: github.com/jimkyndemeyer/js-graphql-intellij-plugin/issues

            Это же не проблема AppCode и/или IDEA
              0
              при чем тут разработчик плагина? никаких плагинов я не использую. автокомплит не видит часть полей из обычного swift файла который генерится при билде. очевидно, что это проблема среды разработки, а не отсутствующего плагина
                0
                А, ну я не так понял проблему.

                Некоторые проблемы, особенно автогенерации и вообще новых файлов (бывает и после пулла новых файлов из репы) можно решить обычным рефрешем (Ctrl+Alt+Y), кнопочкой слева-сверху. Мне помогало.
              0

              И все-таки нужно чуть побольше информации. Вот мы отсмотрели их тестовый проект, на первый взгляд криминала нет (AppCode 2018.2). Можете форкнуть проект и просто там, где есть проблемы, поставить короткий комментарий? Или хотя бы участок кода нужен, пока непонятно, куда копать.

                0
                хорошо. я попробую
              0
              Хочу сказать спасибо за AppCode, это самые продуктивные 6 евро которые я трачу в месяц. Если бы вы еще добавили возможность принудительной переиндексации проекта — было бы здорово. У нас большой проект состоящий из нескольких фреймворков и очень часто возникает ситуация, что, после нескольких переключений бранчей в гит, индексация проекта слетает и приходится закрывать и открывать AppCode снова.
                0

                Спасибо! Про ваш комментарий — есть вот такая проблема, мы ее очень долго нормально не можем воспроизвести. Переиндексация должна происходить, но не происходит. Что бы помогло нам:


                1. Help → Show Log in Finder → отправить всю папку на stanislav.dombrovsky@jetbrains.com (мне). Либо приттачить в тикет выше с видимостью на appcode-developers


                2. Описать (либо по email, либо в тикете), как в точности действия происходят до возникновения красного кода (только ли это переключений бранчей или, допустим, установка pods, удаление pods, что-либо еще). Кажется, мы не реагируем на какое-то действие, на которое должны.



                Если сможем воспроизвести — это очень сильно поможет, давно хотим решить.

                  0
                  Как возникнет в следующий раз — сделаю. Это точно стало происходить реже в последние месяцы.
                    0
                    Логи лучше выслать сейчас — там с большой вероятностью осталось что-то полезное.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое