Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров4.2K
Всего голосов 15: ↑15 и ↓0+15
Комментарии21

Комментарии 21

Сижу на AppCode с момента его появления. Спасибо, что делаете его лучше, но…
Последнее время работать в нем сплошное мучение (большой смешанный проект) — подвисает на минуты буквально при любом действии: навигация по коду, автогенерация методов для перегрузки и протоколов. Про автоподстановку уже практически забыл — проще написать имя переменной/метода полностью ручками, чем ждать, пока он найдет объявление буквально парой строк выше.

Насколько понимаю, это проблемы именно смешанного проекта — на чистом свифт все не так плохо. Можно ли ожидать улучшений, или придется переходить на XCode?
Улучшения будут. Следующий релиз 2019.3 будет целиком посвещен работе над быстродействием. Это уже становится хорошей традицией — поступать так с последним релизом в году, но в этот раз работать будем еще более плотно. Скорее всего, с одной стороны, эта работа растянется на пару релизов, с другой стороны к сходимости придет ряд задач, над которыми мы уже около года работаем.

Что нужно от каждого, кто видит этот комментарий:

  • Нам можно и нужно писать в трекер, даже если не вполне понятно, в чем проблема. Мы поможем разобраться. Лучше конечно, при любой проблеме с быстродействием / фризах, сразу же прикладывать целиком папку с логами (Help | Show Log in Finder) и снимать CPU снэпшоты
  • Если удобнее через support — надо писать в support
  • Если удобнее писать в Slack — есть открытые каналы AppCode в Slack CocoaHeads (#jetbrains) и RxSwift (#appcode-users)
  • Если есть команда, у которой есть трудности по адаптации AppCode — надо писать мне на stanislav.dombrovsky at jetbrains.com и просить сделать демку / вместе посмотреть проблемы. Это нормальная и обычная практика для нас.
  • Если есть возможность и желание дать доступ к своему громадному проекту, чтобы мы могли на нем поотлаживаться — необходимо писать на эту же почту. Да, я в курсе про NDA, но для начала неплохо бы запустить процесс и вместе посмотреть — что мы можем там сделать. Польза будем всем — мы сможем продиагностировать проблемы, которые есть у других с большой вероятностью, компания в итоге получит ускорение работы.
Начал было серьезно задумываться о попытке перехода на AppCode, но после вашего коммента передумал…
Напрасно, это никак не умоляет достоинств среды. Меня тошнит каждый раз когда приходится переключаться в икскод. Эти проблемы то появляются то исчезают. И всегда можно использовать предыдущую версию. Икскод же так и остался мертворожденным.
Ребята, вы делаете отличную работу. Но я скажу тоже самое, что и автор выше. Я вынужден был пропустить последние EAP версии, потому что они были слишком медленными в поиске символов и автоподстановке. Я надеялся что проблема будет решена в стабильной версии, но сильно лучше не стало.
У нас не смешанный проект, обычный интернет магазин. Только свифт. Сравните версии 2019.1 и 2019.2, что изменилось в индексации что он стал таким мертвым.
И еще одно замечание по тестам. Я так и не нашел возможности запустить сразу и Unit тесты и UI тесты.
Сразу — имеется в виду до конца индексации. Действия типа Run All Tests in Project у нас нет. Но сейчас по крайней мере можно выбрать тестовую конфигурацию запуска и нажать Run — и он сработает.
На самом деле сравнивали, причем постоянно. Репорты про замедление видим — почему, пока не ясно.
Замедление это мягко сказано…
Жаль что я не могу помочь больше. Я все логи и что еще запрашивали прикреплял.
Я бы сказал что вас срочно надо заниматься обтимизацией, не дожидаясь последнего релиза в году.
Вот свеже открытый проект после индексации:
www.dropbox.com/s/9a33w7q30owi9sy/Symbol%20Search.mov?dl=0
Или вот:
www.dropbox.com/s/uu4jqajv6v80doq/Method%20%20Resolvign.mov?dl=0
В сравнении с не православным XCode
www.dropbox.com/s/e6xn46nixk833c8/Xcode%20resolution.mov?dl=0
Жаль что я не могу помочь больше. Я все логи и что еще запрашивали прикреплял.

За это спасибо, вижу по тикетам еще за версию 2017.2. То замедление мы все-таки тестировали и вроде бы как раз в 2019.2 поправили. А вот по этому тикету помочь как раз можете — пара снэпшотов (один на 2019.2, другой на 2019.1.2) при открытии одного и того же файла сильно помогли бы.

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

Здесь вы меня неверно поняли. «Целиком» посвятить — это значит, что работы не будет идти даже над какими-то совсем двухчасовыми мелочами. Это значит совсем целиком. В остальное время работа по оптимизации идет непрерывно. Третий релиз лучше подходит для того, чтобы работать над этим еще больше потому, что первый стабильно короткий, а второй стабильно появляется во время очередной беты Xcode, когда — как и всегда — приходится отрабатывать случившееся в ней.

Вот свеже открытый проект после индексации:

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

Или вот:

Дженерики. С дженериками все еще проблемы, правим по ходу, но тут либо дженерики, либо работа над быстродействием. Слишком много времени уйдет, хочется сначала ускорить все.
А вот по этому тикету помочь как раз можете — пара снэпшотов (один на 2019.2, другой на 2019.1.2) при открытии одного и того же файла сильно помогли бы.


Я освобожусь попробую помочь по тикету.

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

Вы не поняли, я не с иксодом сравниваю. А показываю что аппкод не открывает этот метод вообще. Икскод хоть как то пытается это сделать.

«Целиком» посвятить — это значит, что работы не будет идти даже над какими-то совсем двухчасовыми мелочами. Это значит совсем целиком. В остальное время работа по оптимизации идет непрерывно.

Тут тоже маленькое недопонимание. Я не знаю упали ли у вас количества платящих пользователей в последнее время, но аппкод становится не пригодным для больших проектов. Я не единственный кто использует аппкод среди знакомых, и многие переключаются в XCode для написания кода, а в Аппкоде выполняют только рефакторинг. Именно потому что скорость работы становится неприемлемой.
Я надеялся что проблема будет решена в стабильной версии, но сильно лучше не стало.

И кстати да, я просто отмечу этот тезис. С ним сталкиваешься часто.
Протестировать все нельзя. Заметить все нельзя. Проекты разные. Зависимости разные. Все разное.

В общем, не надо ждать — даже неформализованную проблему лучше репортить сразу. Лучше мы потратим время, чтобы понять, что все в порядке или скажем, что мы это исправим, чем что-либо не заметим.
Я репорчу по мере возможности. Но последняя версия совсем не стабильна. Я вот пишу вам и занимаюсь собственной работой. Жуть лезет из всех щелей. 2019ю2 стал использовать опять только сегодня после статьи. Вдруг откуда не возьмись:
www.dropbox.com/s/o2ztuse7znrjkmc/Screenshot%202019-08-02%20at%2015.03.07.png?dl=0

Я ни бранч не переключал, просто сижу работаю.

О каких баг репортах может идти речь, если я просто вынужден вернуться в предыдущую стабильную версию.
И я уже не раз просил сделать кнопку принудительной реиндексации проекта без необходимости рестарта АппКода.

Эти 5 евро в месяц личных денег которые я плачу за подписку пока что мои самые полезные траты. Но последний год прям очень расстраивает.
Вдруг откуда не возьмись:
www.dropbox.com/s/o2ztuse7znrjkmc/Screenshot%202019-08-02%20at%2015.03.07.png?dl=0


Это OC-16720, которую мы никак не можем отловить. Понять бы все-таки шаги, по которым у вас воспроизводится…
Когда наконец appcode будет хоть как то выделять символы которых нет в проекте? Я могу написать название класса которого нет, или метод. И это будет просто белый текст. Очень легко пропустить. Наверное только из за этого я до сих пор на Xcode.
Сейчас такие символы должны подчеркиваться красным после того, как отработает SourceKit-аннотатор. У вас так не происходит?
Нет. Находил советы почистить кэш и запустить сборку на реальном девайсе. Что я только не делал, он не подчёркивает их. И вообще некоторые ошибки показывает, но примерно 70% я могу увидеть только запустив сборку. Это обескураживает. Есть вопрос на SO, где люди каждый год в комментарии отписываются, что все еще не работает. Вы там даже отвечаете) stackoverflow.com/questions/36249535/how-to-immediately-see-swift-errors-in-appcode
Последний комментарий там год назад. Появился он до того, как мы реализовали одно исправление, которое полностью убрало необходимость сборки под девайс. Что характерно, уже год там новых комментариев не появляется.

Далее, я вот прямо сейчас взял несколько немаленьких проектов, в произвольном месте написал о несуществующем и через некоторое время подчеркивание появилось. Если я возьму минимальный проект, будет то же самое. Немедленно эти ошибки появиться не смогут — они появляются с той скоростью, с которой их показывает SourceKit.

У вас правый верхний угол (индикатор анализа кода) что отображает на момент «нет посветки»? Если серый «глаз» — значит, аннотатор все еще отрабатывает. Если что-либо другое и при этом ошибки не отобразались — надо конкретно смотреть в саппорте.
У меня установлен билд 2019.1. Но попробую еще раз, на более свежей сборке.
Обсудили — в итоге это OC-18996.

Всем, у кого та же проблема — начиная с 2019.2 имеет смысл делать тикет, прикладывая результат запуска Find Action | Run Swift IDE Report.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий