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!

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:

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:

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 ⌥⏎:

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:

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
):

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:

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):

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:

À gauche dans l'éditeur se trouvent les résultats de la 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:

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

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:

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:

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:

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:

C'est la fin. Écrivez toutes les questions et suggestions ici dans les commentaires - nous serons heureux de vous répondre!
Équipe AppCode