AppCode 2019.2: Swift 5.1, analyse de la couverture du code par des tests, affichage du code désassemblé et plus

Les astrologues ont annoncé une semaine de sorties sur JetBrains, le nombre de billets de blog a triplé! En fait, c'est aussi une publication, donc si vous avez participé à EAP, vous savez déjà tout.


Sinon, assurez-vous de vérifier la coupe, car dans cette version, nous avons non seulement l'analyse de la couverture du code avec des tests et l'affichage du code désassemblé, mais également la prise en charge DSL dans Ruby et beaucoup d'autres choses intéressantes!


Courez avec couverture



Rapide


Prise en charge linguistique


A commencé à prendre en charge Swift 5.1:


  • SE-0242 : Synthétisez les valeurs par défaut pour l'initialiseur membre.
  • SE-0254 : indices statiques et de classe.
  • SE-0068 : Extension de Swift Self aux membres de la classe et aux types de valeur.
  • SE-0260 : Evolution de la bibliothèque pour les ABI stables.
  • SE-0258 : Enveloppeurs de propriétés

Pendant le processus, le degré de préparation peut être consulté ici .


Pliage de code


Les fermetures pliantes ont-elles:


Fermeture pliante


Rétroéclairage


Vous ne pouvez pas simplement prendre et mettre en évidence une ligne de code sans savoir avec quelles entités spécifiques nous traitons. Par conséquent, la mise en surbrillance complète n'est possible qu'après la construction complète des caches. Mais nous connaissons à l'avance les mots-clés du langage et pouvons les mettre en évidence - maintenant ils sont mis en évidence pour Swift, même si l'indexation avec mise en cache n'est pas encore terminée:


Mots clefs


Génération d'éléments d'énumération


Nous continuons à étendre la portée de Create From Usage : vous pouvez maintenant créer un élément d'énumération à partir de son utilisation dans le code, simplement en appuyant sur ⌥⏎:


Créer à partir de l'utilisation


Recherche d'utilisation


La recherche d'utilisations dans AppCode recherche des constructions de code spécifiques (variables, classes, fonctions, méthodes de classe, etc.) - cela vous permet de réduire considérablement la zone de recherche par rapport au texte intégral. Jusqu'à récemment, pour Swift, nous n'affichions que les endroits où un design particulier est utilisé. En 2019.2, nous avons implémenté un regroupement des utilisations par type, donc maintenant nous pouvons comprendre rapidement comment nous utilisons une variable, une fonction ou une classe:


Trouver les usages


Fusion de lignes de code


Rien de spécial, vous pouvez maintenant coller la déclaration et l'initialisation de la variable à l'aide de Join Lines ( ⌃⇧J ):


Joindre des lignes


Importations automatiques


Il existe un tel système de construction - BUCK . Le système de construction BUCK utilise par défaut des cartes d'en-tête, dont nous avons ajouté le support il y a un an, mais n'a pas eu le temps de le lancer dans les importations automatiques. Par conséquent, après avoir appuyé sur ⌥⏎, un long chemin vers l'en-tête a été inséré, ce qui est absolument inutile. Maintenant, cela ne se produit pas, maintenant tout est correct.


Débogage


Affichage du code démonté


Des collègues de CLion ont fait le mappage du code désassemblé pour LLDB dans la version 2019.1, et nous l'avons réutilisé de manière créative dans cette version:


Vue de démontage


Complétion automatique


Une autre chose utile à l'origine faite dans CLion est la saisie semi-automatique des commandes de débogage dans la console LLDB en appuyant sur ⇥ (la même chose que dans une console normale):


LLDB commande l'achèvement


Test du code d'analyse de couverture


Enfin fait et bien fait. Nous sélectionnons la configuration de test, cliquez sur Exécuter avec couverture et laissons pour finaliser les tests, nous sommes satisfaits du résultat:


Courez avec couverture


À gauche dans l'éditeur se trouvent les résultats de la couverture:


Rezultats de couverture


En cliquant sur l'indicateur de couleur, une plaque s'affiche avec le nombre d'appels dans cette section du code et les actions utiles:


Nombre de coups


Les statistiques de couverture sont affichées brièvement dans la vue Projet , et plus en détail dans une fenêtre distincte:


Fenêtres à outils


Générer, exécuter, déboguer et tester pendant l'indexation


L'indexation et la création de caches ne sont pas un processus rapide, en particulier sur les grands projets et en particulier la toute première indexation. Néanmoins, vous pouvez effectuer certaines actions avec le projet pendant son exécution, par exemple, générer ou exécuter l'application.


Pendant longtemps, ces actions ont été bloquées pour nous, car pour une utilisation normale de la configuration de lancement, il a d'abord fallu créer des caches sur le projet. En fait, ce n'est pas si nécessaire, par conséquent, dans la version 2019.2, nous avons délié de manière décisive la création de configurations de lancement à partir de la mise en cache, et maintenant vous pouvez assembler, lancer, déboguer ou tester le projet immédiatement après son ouverture:


Générer, exécuter, déboguer et tester pendant l'indexation


Intégration


Plugin TextMate


Souvent, il leur est demandé d'ajouter la prise en charge d'une langue qui n'est pas la principale d'AppCode. Parfois, nous le faisons si nous comprenons que de nombreux utilisateurs en ont vraiment besoin, donc à un moment donné, nous avons traîné une partie de WebStorm pour nous, afin que les développeurs sur React Native et PhoneGap soient à l'aise de travailler avec HTML / CSS / JavaScript.


Puis vint le plugin pour Markdown , car tout README doit pouvoir être édité rapidement et facilement. Il existe également un plug-in pour AppleScript créé par l'un de ses collègues simplement parce qu'il était intéressé par l'écriture du support du langage.


Mais vous ne pouvez pas entasser l'immensité, donc nous ne pouvons pas implémenter le support pour toutes les langues. Par exemple, dans le développement iOS, les DSL créés sur Ruby sont souvent trouvés (configurations CocoaPods et Fastlane). Initialement, la demande ressemblait à «activer tout le support Ruby», mais en réalité ces configurations ne sont pas souvent modifiées, et tirer la moitié de RubyMine à cause d'eux ne semble pas raisonnable. Dans le même temps, ne pas avoir de soutien n'est pas bon non plus.


Dans cette version, les collègues de WebStorm ont inclus dans l'installation par défaut un plug-in prenant en charge les bundles TextMate, qui donne à un tas de langues un simple surlignage et une auto-complétion. Nous avons suivi leur exemple, et maintenant nous avons aussi ceci:


Ensembles de plugins TextMate


En raison de certaines contradictions dans la prise en charge de Fastlane de la part de ces bundles eux-mêmes, le principe de configuration de Ruby DSL reste le même (cependant, vous pouvez aider à corriger cette situation).


Plugin de script shell


Les scripts sont courants dans les projets, nous avons donc inclus la prise en charge de leur modification:


Plugin de script shell


Fenêtre de validation


Plus précisément, il n'y a plus de fenêtre séparée - elle fait désormais partie de l'onglet Modifications locales:


Fenêtre de validation


C'est la fin. É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/fr461949/


All Articles