AppCode 2019.3: fonctionne plus rapidement, comprend mieux Swift, connaît Mac Catalyst et affiche facilement les messages d'assemblage

Dans AppCode 2019.3, nous nous sommes concentrés sur la prise en charge de la vitesse et de la langue. Dans ce post, nous racontons ce qui s'est passé (spoiler: ils ont beaucoup accéléré).


Splash



Performances


Il peut être difficile de déterminer dans quelle mesure un correctif donné a un effet sur la vitesse - et cela est indépendant du nombre de projets de test et de leur complexité. Depuis 2019.3, tout est plus facile, car lors de la préparation de la sortie, nous avons reçu beaucoup de retours que les performances se sont vraiment améliorées. Voici ce qui s'est passé pour accélérer:


  • Mise en évidence, navigation et auto-complétion dans les projets sur Swift pur et les projets à code mixte. Disons simplement que cela a commencé à fonctionner beaucoup plus rapidement par rapport à 2019.2.
  • Il existe une telle phase de mise en cache, «Traitement des modules Swift». Les interfaces des modules Swift nécessaires au fonctionnement de l'EDI, jusqu'à Xcode 11, étaient dans le binaire de la chaîne d'outils, et leur représentation textuelle devait être obtenue via SourceKit. SourceKit fonctionne lentement, et si pour les frameworks système, nous avons déjà mis des caches prêts à l'emploi dans le programme d'installation (qui, cependant, doivent être mis à jour pour chaque version de Xcode), cela ne fonctionnera pas pour les frameworks du projet lui-même. En conséquence, ils ont trouvé certaines pièces non optimisées et corrigées, cela a commencé à fonctionner beaucoup plus rapidement.

Une autre partie des améliorations est toujours en cours, et il y en a plusieurs. Ce sont des caches supplémentaires là où ils n'existent pas encore, et l'amélioration de l'algorithme de construction des symboles de conception, et bien plus encore. Ce sont déjà des plans pour 2020.1.


Prise en charge linguistique


Les tâches linguistiques ont la même priorité que le travail de performance, donc une partie de l'équipe surveille les changements en évolution rapide et, dès qu'ils sont acceptés, commence à les intégrer dans AppCode. Cette version a pris en charge:



Actions pour modifier le code


Ils sont intensifiés. L'équipe AppCode s'agrandit et pour présenter un nouveau développeur au cours, nous proposons généralement de nouvelles fonctionnalités, petites mais intéressantes. Cette fois, c'était une douzaine d'actions pour Swift, avec lesquelles vous pouvez:


  • Combinez (et vice versa) une déclaration de variable avec une valeur qui lui est affectée:
    Déclaration et affectation des variables de fractionnement / jointure
  • Diviser les déclarations de plusieurs variables en variables distinctes:
    Déclarations de variables divisées avec plusieurs éléments
  • Fractionner / fusionner imbriqué si / autre:
    Diviser / joindre des instructions if / else imbriquées
  • Échangez des parties de comparaisons ou d'expressions binaires:
    Inverser les comparaisons et les expressions binaires
  • Faites une inversion si:
    Inverser si condition
  • Diviser / fusionner les conditions à l'intérieur de la même construction if:
    Conditions de fusion / fractionnement
  • Appliquer les lois de Morgan:
    Les lois de De Morgan

Génération de code


Ajout de deux nouveaux paramètres de génération de code dans l' Editor | Code Style | Swift | Code Generation | General Editor | Code Style | Swift | Code Generation | General Editor | Code Style | Swift | Code Generation | General :


  • Prefer Void over () et
  • Prefer explicit return .

Formatage


À la demande des utilisateurs, ils ont ajouté des options de formatage afin de:


  • Laisser les petits blocs de propriété avec willSet seule ligne willSet / didSet (Preferences | Editor | Code Style | Swift | Wrapping and Braces | Keep when reformatting | Methods and functions in one line)
  • Il en va de même pour les déclarations de type vides ( Preferences | Editor | Code Style | Swift | Wrapping and Braces | Keep when reformatting | Empty type declarations in one line )

Chaînes d'outils Swift personnalisées


Ils ont appris à AppCode à utiliser correctement le code lors de l'utilisation de chaînes d'outils Swift non standard (par exemple, Swift pour Tensorflow ).


Créer des messages


Dans l'une des versions précédentes, nous avions un problème avec les messages d'assembly qui n'était pas résolu dans le cadre de l'implémentation actuelle. Cependant, nous n'avons pas pu le réparer. De plus, il y avait encore des problèmes avec la vitesse de traitement des messages, leur affichage, des changements fréquents dans le format de ces messages d'une version de Xcode à une autre, et bien d'autres petites choses. En conséquence, nous avons appris à AppCode à récupérer l'arborescence des messages d'assemblage directement à partir du système de construction Xcode "en l'état" et à l'afficher simplement dans nos messages :


Créer des messages


Avec ces informations, il s'est avéré trouver un moyen d'afficher la progression normale de la construction:


Progression des messages


Au final, nous avons également simplifié le filtrage des messages et fait la même chose que dans Xcode:


Filtre Messages groupés


Prise en charge de Mac Catalyst


Ici, tout est simple: nous avons appris à travailler avec les cibles Mac Catalyst afin qu'elles puissent être lancées, déboguées, affichées dans Run Configurations.


C’est tout. En 2020.1, nous prévoyons, comme dans cette version, de consacrer le maximum de temps à l'optimisation de l'IDE, avec un minimum de nouvelles fonctionnalités.


Écrivez toutes les questions et suggestions ici dans les commentaires - nous serons heureux de vous répondre!


Équipe AppCode

Source: https://habr.com/ru/post/fr479450/


All Articles