PhpStorm 2020.1: support composer.json, outils pour PHPUnit, couverture de code avec PCOV et PHPDBG, Grazie et plus



Bonjour, Habr! Nous sommes heureux de vous présenter la première version majeure de PhpStorm cette année!

Sous la coupe, une analyse détaillée de tous les changements notables et de nouvelles fonctionnalités. Attention - beaucoup de photos.

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


Toutes les actions pour travailler avec les dépendances sont désormais disponibles directement dans le fichier composer.jsonet fonctionnent directement dans l'éditeur.

Vous pouvez créer un nouveau fichier composer.json à partir du menu contextuel ou par raccourci clavier Ctrl(⌘)+N. Le modèle de ce fichier se trouve dans Préférences / Paramètres | Editeur | Modèles de fichiers et de codes .



Gestion des dépendances

Pour ajouter une dépendance, commencez simplement à écrire le nom du fournisseur et du package, et une liste de saisie semi-automatique avec les options appropriées apparaît. Les versions disponibles de ce package seront proposées



dans le champ version . Pour l'instant, un chariot (^) ou un autre symbole pour spécifier une gamme de versions devra être ajouté manuellement, mais dans les versions futures, nous corrigerons cela.
Pour les exigences sur la version de PHP ou la présence d'extensions, l'auto-complétion fonctionnera également.

Mise à jour et installation de packages

S'il composer.lockn'y a pas encore de fichier et qu'aucun package n'est installé, PhpStorm mettra en surbrillance le nom de la section requireet require-dev. Pour les installer, vous pouvez cliquer sur le bouton Installer dans la barre d'outils au-dessus de l'éditeur. Ou utilisez l'action de clic rapide Alt(⌥)+Enteret sélectionnez Installer les packages.



Mais si tous les packages ne sont pas installés, PhpStorm mettra en évidence ceux qui manquent. Ensuite, Alt(⌥)+Entervous pouvez appeler n'importe lequel d'entre eux et sélectionner Mettre à jour le package ou Mettre à jour tous les packages .

À côté de l'exigence de version spécifiée, la version grise sera la version du package réellement installée. Et dans la boîte de dialogue pop-up pour les packages, il y aura des informations de packagist.org sur le nombre de téléchargements et d'étoiles.



PhpStorm prend toutes les informations sur les packages et leurs versions de packagist.org et les met en cache.

Navigation vers des fichiers et des dossiers

Vous savez sûrement qu'en cliquant sur Ctrl(⌘)+Clicket Ctrl(⌘)+Bvous pouvez aller à la définition des entités ou rechercher leur utilisation.

En composer.jsoncela aussi, cela fonctionnera. Si vous cliquez Ctrl(⌘)+Clicksur un package, le répertoire correspondant sera mis en évidence dans l'arborescence du projet. Et si sur un fichier, il sera ouvert dans l'éditeur.



En cliquant sur Ctrl(⌘)+Clickou Ctrl(⌘)+Bsur n'importe quel lien, vous l' composer.jsonouvrirez dans le navigateur.

Complétion automatiquedans les sections de chargement automatique (-dev) La saisie semi
-automatique basée sur les informations des classes et la structure de répertoires du projet fonctionne pour les espaces de noms et les chemins.



Ctrl(⌘)+Clicket Ctrl(⌘)+Bpour accéder aux fichiers et dossiers fonctionne ici aussi.

Améliorations pour les scripts

Premièrement, les transitions vers des fichiers / dossiers / méthodes fonctionnent de la même manière. Deuxièmement, les alias des équipes sont pris en charge. Et troisièmement, les scripts peuvent être lancés à partir de l'éditeur en appuyant sur le bouton [play] en face du nom du script.

Cela crée automatiquement une configuration d'exécution. Cela signifie que vous pouvez réexécuter le script avec un raccourci clavier Ctrl(⌃)+R, ce qui est très pratique lors du débogage:



Installation d'outils de qualité de code
S'il existe des dépendances de développementFriendsOfPHP/PHP-CS-Fixer, PhpStorm vérifiera si l'inspection appropriée est activée et si l'ensemble de règles est installé. Sinon, vous pouvez appeler Alt(⌥)+Enterpour le réparer:



Améliorations de l'inférence de type PHP


Le moteur d'inférence de type est le fondement de PhpStorm, et dans cette version, quelques modifications notables ont été apportées.

Surlignage supplémentaire des balisesvar
L'ajout de balises @varest un bon moyen de dire à PhpStorm le type d'une variable. Mais nous améliorons constamment l'inférence de type, et certaines de ces déclarations pourraient bien être redondantes, car PhpStorm connaît déjà le type de la variable.

Ces cas seront mis en évidence et ils peuvent être supprimés à l'aide de la correction rapide Alt(⌥)+Enter-> «Supprimervar» : Le



suivi des types nuls est une tâche difficile, et il y avait des endroits où PhpStorm ne pouvait pas le gérer. Maintenant en 2020.1 PhpStorm sait quand une variable peut être nulle et quand non.

Voici quelques exemples:



Saisie semi-automatique pour un tableau initialisé

Supposons que vous ayez un tableau avec des éléments connus et que vous essayiez plus tard de le parcourir. Auparavant, la saisie semi-automatique ne fonctionnait pas ici, car les informations de type étaient perdues. En 2020.1, tout fonctionne: la



saisie semi-automatique dans array_map / array_filter.

Dans le corps de fermeture, qui est transmis aux fonctions array_map () et array_filter (), le complément d'arguments fonctionne désormais.



Couverture de code à l'aide de PCOV et PHPDBG


Vous pouvez créer une couverture de code avec Xdebug . Mais comme il s'agit principalement d'un débogueur, il a des frais généraux décents. Pour accélérer l'obtention d'un rapport de couverture, vous pouvez utiliser des outils plus légers: l' extension krakjoe / pcov ou PHPDBG intégré à PHP 5.6+.

Les deux sont désormais pris en charge dans PhpStorm. Vous devez créer une configuration d'exécution pour les tests et sélectionner le pilote de couverture souhaité dans les paramètres. Exécutez ensuite les tests avec calcul de couverture en cliquant sur le bouton :



En savoir plus sur les différences de calcul de couverture entre Xdebug, PCOV et phpdbg dans README .

PHPUnit Toolkit


Dans la version récente de PHPUnit 9 (et déjà 9.1), de nombreuses fonctionnalités ont été supprimées ou obsolètes. Pour accélérer la migration et éviter les erreurs, nous avons ajouté un tas d'inspections et de solutions rapides.



Créer un nouveau test pour la classe

En appelant Alt(⌥)+Enterla déclaration de classe et en sélectionnant Créer un nouveau test PHP, vous pouvez rapidement obtenir le squelette du test.



Métadonnées


Les métadonnées du fichier .phpstorm.meta.phppermettent à PhpStorm de fournir des informations supplémentaires sur votre projet et ainsi d'améliorer la complétion du code. Par exemple, cette fonctionnalité est utilisée dans le plugin Symfony et dans Laravel IDE Helper .

Vous pouvez en savoir plus sur les capacités des métadonnées à partir d'un rapport PHP en tant qu'outil de développement pour PhpStorm sur PHP Russie 2019.

PhpStorm 2020.1 a ajouté un certain nombre d'améliorations pour les métadonnées.

Les directives d'indexation des paramètres remplacent, mappent et tapent

Avant d'utiliser override(), map()et type()vous pouvez modifier le comportement des premières fonctions d'argument. Dans PhpStorm 2020.1, vous pouvez spécifier un index de paramètre arbitraire:



Accès aux propriétés via __get

Si vous avez reçu des valeurs de propriété par magie __get(), les informations sur le type ont été perdues. Il était possible d'utiliser des balises supplémentaires @varou @property, mais cela n'a pas toujours été enregistré. Vous pouvez maintenant tout spécifier via des métadonnées.



La saisie semi -automatique des clés dans les objets implémentant les

métadonnées ArrayAccess prend en charge les objets ArrayAccess, mais suggère uniquement le type de valeurs. Désormais, les touches possibles se complètent automatiquement.



Points de sortie personnalisés

PhpStorm prend en compte les fonctions de type die()et / exit()ou la levée d'exceptions pour terminer l'exécution. Mais les applications peuvent avoir des points de sortie plus complexes. Par exemple, fonction simple dd()ou trigger_error avec l'argument E_USER_ERROR .

Dans PhpStorm 2020.1, vous pouvez marquer des fonctions comme points de sortie, et cela ajustera l'analyse de flux en conséquence.



Icônes des fonctions redéfinies via les métadonnées

En face des déclarations de fonctions dont le comportement a été modifié avec override(), exitPoint()ou expectArguments(), une icône sera affichée. Cliquer sur l'icône ouvrira un fichier .phpstorm.meta.phpdans lequel le comportement change, car il peut y avoir plusieurs fichiers.



Les icônes peuvent être masquées dans Préférences / Paramètres | Editeur | Général | Icônes de gouttière .

Apprentissage automatique pour trier la liste des modules complémentaires


Ajout du classement des options de complétion automatique basé sur l'apprentissage automatique.

Comment voir ML en action?

La complétion automatique avec ML est désactivée par défaut. Nous ne voulons pas que les robots nous volent notre travail! Pour l'activer, accédez à Préférences / Paramètres | Editeur | Général | Code Completion et activez les options Classement des suggestions d'achèvement basées sur Machine Learning et PHP .

Si vous activez également l'option Afficher les changements de position dans la fenêtre contextuelle de complétion , la liste de complétion automatique montrera comment l'ordre des éléments a changé.



Nous prévoyons d' empêcher le soulèvement des voitures de continuer à travailler dans ce sens dans les futures versions.

Nouvelles inspections


Une propriété privée peut être une variable locale.

Une définition de propriété sera mise en évidence si elle est utilisée dans une seule méthode et y est immédiatement remplacée. Pour résoudre ce problème, vous pouvez appeler le correctif rapide Alt(⌥)+Enter «Remplacer la propriété par une variable locale» .



Initialisation de propriété supplémentaire

Supposons qu'une propriété privée ait une valeur par défaut dans une classe, mais dans le constructeur, elle est immédiatement remplacée par une autre valeur. Dans ce cas, la valeur par défaut est redondante et n'ajoute que du bruit.

Un initialiseur inutilisé sera mis en surbrillance et il peut être supprimé avec une solution rapide Alt(⌥)+Enter «Supprimer l'initialiseur redondant» .



Changer le type de propriété en PHP 7.4 en valeur par défaut



Opérateur ternaire redondant

PhpStorm mettra en évidence les expressions ternaires triviales et avec une solution rapide, Alt(⌥)+Entervous pouvez les remplacer par des expressions plus simples:



Transfert redondant par référence L'

utilisation du transfert par référence peut entraîner des conséquences inattendues, et c'est l'une des raisons pour lesquelles Nikita Popov a suggéré d'autoriser le transfert explicite par référence lors de l'appel fonctions en PHP.

En attendant, PhpStorm 2020.1 mettra en évidence les paramètres déclarés comme passés par référence, mais non utilisés en tant que tels. Ils peuvent être retirés en toute sécurité avec une solution rapide Alt(⌥)+Enter.



La même chose fonctionnera pour les tableaux avec un lien dans la boucle foreach:



Supprimez le PHPDoc supplémentaire , dans lequel seule la déclaration de type est désormais également assez simple grâce au correctif rapide correspondant.



Certes, par défaut, l'inspection est au niveau Info , c'est-à-dire qu'elle ne sera pas mise en évidence. Si vous souhaitez mettre en surbrillance les blocs PHPDoc redondants, inspectez le commentaire PHPDoc redondant dans Préférences | Editeur | Inspections, définissez le niveau d' avertissement faible ou supérieur.

Mise à jour de la refactorisation «méthode Move»


Parfois, il peut être nécessaire de transférer une méthode dans une autre classe. Si cette méthode est utilisée plusieurs fois dans le code du projet, PhpStorm peut vous aider ici.

Auparavant, vous deviez d'abord rendre la méthode statique, puis appeler une autre action pour la transférer. Dans PhpStorm 2020.1, le refactoring de la «méthode Move» a été retravaillé en une seule action atomique. Suppression des étapes et des pop-ups supplémentaires, et tout est fait en une seule fois.

Passez la souris sur une méthode et appuyez sur F6(ou Ctrl+T, 3). Sélectionnez ensuite la classe cible et vous avez terminé.



Pour voir tous les refactorings disponibles , vous pouvez cliquer Ctrl+Tn'importe où dans le code.

Débogage PHP dans le client HTTP


Maintenant, pour activer le débogage de manière sélective, vous n'avez pas besoin de vous soucier des paramètres de demande ou d'installer l'extension dans le navigateur. Il suffit de créer une requête HTTP dans un fichier .httpet de l'envoyer avec la commande PHP Debug , disponible dans le menu Alt(⌥)+Enterou en cliquant sur l'icône. En conséquence, un cookie sera automatiquement ajouté à la demande XDEBUG_SESSION.



Et encore quelques petites choses pour PHP


@ les éléments obsolètes sont affichés comme barrés dans l'arborescence Structure.
Ctrl(⌘)+F12



Surlignage des balises correspondantes <? php /?>



Aller au crochet d'ouverture / fermeture

Shift+Ctrl+M (⌃+M)



Personnalisation de Lexer pour Twig

Parfois, vous devrez peut-être modifier les caractères des balises pour les modèles Twig, par exemple, si vous utilisez également Angular, qui en a même syntaxe.
Vous pouvez le faire dans les Préférences / Paramètres | Langues et cadres | PHP | Brindille .

IDE


Grammaire et orthographe avancées Grazie


Le plugin Grazie est inclus dans PhpStorm prêt à l'emploi, qui vérifie le texte non seulement pour les fautes d'orthographe, mais aussi pour la grammaire et le style. De plus, 16 langues sont prises en charge et toutes les vérifications sont effectuées localement sans envoyer vos données n'importe où.



Par défaut, les vérifications sont activées pour les fichiers Markdown.
Vous pouvez également les inclure pour tous les littéraux de chaîne, les commentaires, les blocs PHPDoc et les messages de validation.

Pour PHP, vous pouvez activer dans Paramètres / Préférences | Editeur | Relire | Grammaire .

Mode LightEdit


Parfois, vous devez regarder / réparer rapidement le fichier et ouvrir un IDE entier pour cela, cela semble trop, mais vous voulez avoir le rétro-éclairage et les fonctions habituelles. C'est pour de tels cas que nous travaillons sur le mode LightEdit léger.

Cela fonctionne comme ceci: si vous ouvrez le fichier à partir de la ligne de commande ou du menu contextuel du système d'exploitation, alors que PhpStorm n'est pas en cours d'exécution, le fichier s'ouvrira dans LightEdit. Eh bien, si un PhpStorm à part entière fonctionne déjà, le fichier s'ouvre simplement dedans.



JetBrains Mono - police par défaut




Mode Zen


Le nouveau mode combine sans distraction et plein écran pour une immersion profonde dans le code.
Voir | Apparence | Entrez en mode Zen



Interface


Fractionnement de la fenêtre du terminal


Au lieu d'ouvrir de nouveaux onglets et de basculer entre eux, vous pouvez maintenant diviser l'écran et ouvrir plusieurs sessions dans un seul onglet. Pour ce faire, sélectionnez Fractionner horizontalement / verticalement dans le menu contextuel du terminal . Thème



IntelliJ Light

Le thème light a été légèrement mis à jour et unifié pour être identique sur tous les systèmes d'exploitation, et son nom est devenu IntelliJ Light .

Personnalisation de la barre d'état

Dans le menu contextuel, vous pouvez choisir les informations qui y seront affichées.



Configuration


Configuration SSH unifiée


Auparavant, si une connexion SSH était réutilisée dans un déploiement, un interpréteur distant ou un terminal SSH, elle devait être reconfigurée à chaque fois.

Désormais, toutes les connexions SSH peuvent être ajoutées / modifiées dans Préférences / Paramètres | Outils | Configuration SSH , puis utilisez-les à plusieurs reprises là où vous en avez besoin.



Le chemin vers les configurations IDE a changé


Par exemple, sur macOS:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


Plus dans l' aide .

Chemin personnalisé pour enregistrer les configurations d'exécution


Auparavant, les configurations .idead'exécution étaient stockées dans un dossier que beaucoup ajoutent complètement à .gitignore (mieux comme ça ). Vous pouvez maintenant choisir n'importe quel chemin et partager la configuration d'exécution avec des collègues via le système de contrôle de version.

Cela peut être particulièrement pratique lors de l'intégration de nouveaux employés: retirer un projet, ouvert dans PhpStorm, lancé avec un seul bouton.

Pour ce faire, dans la boîte de dialogue de configuration Exécuter / Déboguer, vous devez sélectionner l'option Stocker en tant que fichier de projet , et en cliquant sur l'engrenage, vous pouvez sélectionner le chemin d'accès souhaité dans le projet.



Contrôle de version


Nouveau commit


La fenêtre de validation est disponible en mode non modal et s'affiche à gauche. Ainsi, il ne bloque pas le travail sur d'autres fichiers lors de la préparation du commit, et plus d'informations sur les modifications sont affichées à l'écran.

Le nouveau Commit est activé par défaut pour les nouveaux utilisateurs et désactivé pour ceux qui ont déjà installé PhpStorm.

Activé par l'option Utiliser une interface de validation non modale dans Préférences / Paramètres | Contrôle de version | Commit .



Améliorations de la branche Git


Dans le coin inférieur droit de la fenêtre IDE, la branche Git actuelle est indiquée. Si vous cliquez dessus, le VCS | Git | Une branche .
Ici, nous avons ajouté un champ de recherche. Le bouton Actualiser met à jour la liste des branches distantes. Et pour chaque commit, un indicateur est ajouté: entrant (bleu) ou sortant (vert).



Rebase interactive repensée


Git Rebase vous permet de réécrire l'historique des validations. Vous pouvez maintenant vous débarrasser rapidement des validations "temporaires", corriger le message ou l'ordre des validations. Bien sûr, tout cela peut être fait manuellement depuis la console, mais PhpStorm vous permet de voir immédiatement ce qui a été changé dans un commit particulier.

Pour commencer, dans l'historique des validations, vous devez sélectionner la validation de base souhaitée et sélectionner Rebaser de manière interactive à partir d'ici dans le menu contextuel .



Outils DB


PhpStorm comprend presque toutes les fonctionnalités de DataGrip prêtes à l' emploi , vous pouvez donc voir l' examen de la version DataGrip 2020.1 de nos collègues.

la toile


Et, comme toujours, toutes les mises à jour de WebStorm 2020.1 sont également incluses dans PhpStorm.

Une liste complète des modifications peut être trouvée dans les très grandes notes de version .

Vous pouvez également regarder l'aperçu de la version sur la page " Quoi de neuf " et si vous n'avez que quelques minutes, alors voici une courte vidéo (en anglais) avec une démonstration des principales fonctionnalités de la version:



Et c'est tout ce temps. Merci d'avoir lu jusqu'au bout! Nous serons heureux de répondre à vos questions, souhaits, rapports de bogues et à vos réflexions dans les commentaires.

Prenez soin de vous!
Votre équipe JetBrains PhpStorm

All Articles