Publication de PhpStorm 2020.1 : prise en charge native de composer.json, inférence de type améliorée, outils PHPUnit, correcteur grammatical Grazie, et plus encore

Delphine Massenhove

PhpStorm 2020.1 est disponible !

PhpStorm 2020.1

Cette version majeure apporte la prise en charge native de composer.json, la couverture du code avec PCOV et PHPDBG, la boîte à outils PHPUnit, de nouvelles inspections, des correctifs rapides, des refactorisations, un correcteur grammatical avancé et bien d’autres avantages.

Télécharger PhpStorm 2020.1

Si vous ne disposez que de quelques minutes, regardez la vidéo What’s New in 2020.1 ci-dessus pour avoir un aperçu des principales améliorations. Si vous avez plus de temps, lisez la suite pour découvrir tous les changements et les choses à savoir sur cette nouvelle version. Accrochez vos ceintures car nous avons une tonne de GIF pour vous !

 

Prise en charge directe de composer.json

Toutes les actions de gestion des dépendances sont maintenant disponibles directement lorsque vous éditez le fichier composer.json.

Vous pouvez créer un nouveau fichier composer.json à partir du menu contextuel ou en appuyant sur Ctrl(⌘)+N. Le modèle de ce fichier se trouve dans Preferences/Settings | Editor | File and Code Templates.

composer-json_create_600

Ajouter un package en tant que dépendance
Pour ajouter une dépendance, il suffit de commencer à taper le nom d’un fournisseur et d’un paquet et PhpStorm vous proposera les options appropriées.
Le champ version offrira les versions disponibles de ce paquet. Pour l’instant, vous devrez ajouter manuellement le caret ou les autres symboles pour la gamme de versions, mais cela évoluera dans les prochaines mises à jour.

composer-json_manage_dependencies

La saisie automatique fonctionnera également si vous devez spécifier la version de PHP et les extensions requises.

Dans la fenêtre contextuelle des paquets, vous pouvez trouver des informations provenant de packagist.org sur le nombre de téléchargements et d’étoiles. Toutes les informations sur les paquets et leurs versions sont tirées de packagist.org et mises en cache.

composer_package_info

Installer et mettre à jour les paquets
S’il n’y a pas de fichier composer.lock et qu’aucun paquet n’est installé, PhpStorm mettra en évidence les noms des sections require et require-dev. Vous pouvez cliquer sur le bouton Install dans la barre d’outils au-dessus de l’éditeur. Ou vous pouvez utiliser l’intention en appuyant sur Alt(⌥)+Entrée et en choisissant Install packages.

composer-json_install-update

Et si seuls certains des paquets sont téléchargés, PhpStorm mettra en évidence ceux qui n’ont pas encore été installés. En appuyant sur Alt(⌥)+Entrée sur ceux-ci, vous pouvez choisir Update package ou Update all packages.

La version du paquet actuellement installée sera indiquée en gris à côté de la version requise.

Naviguer vers les fichiers et dossiers
Vous savez probablement qu’avec Ctrl(⌘)+Clic ou Ctrl(⌘)+B vous pouvez aller à la définition des entités ou rechercher des utilisations.

Cela fonctionnera aussi dans le composer.json. En faisant Ctrl(⌘)+Clic sur un paquet, le dossier correspondant sera mis en évidence dans l’arborescence du projet. Et s’il s’agit d’un fichier, alors il sera ouvert dans l’éditeur.

composer-json_navigate

Ctrl(⌘)+Clic ou Ctrl(⌘)+B sur n’importe quel lien dans le composer.json l’ouvrira dans votre navigateur.

Saisie automatique dans autoload(-dev)
La saisie automatique fonctionne pour les espaces de noms et les chemins d’accès aux dossiers en fonction des informations provenant des classes et de la structure des dossiers du projet.

composer-json_autoload@2x

Ctrl(⌘)+Clic et Ctrl(⌘)+B pour naviguer vers les fichiers et dossiers fonctionnent également ici.

Améliorations des scripts
Tout d’abord, la navigation vers les fichiers/dossiers/méthodes fonctionne également. Deuxièmement, les alias pour les commandes sont pris en charge. Et troisièmement, les scripts peuvent être lancés à partir de l’éditeur en appuyant sur le bouton gutter_play_tr près du nom du script.

Cela crée automatiquement une configuration d’exécution. Vous pouvez donc relancer le script par un raccourci Ctrl(⌃)+R, ce qui est très pratique pour le débogage :

composer-json_scripts_run-config@2x

Outils de qualité du code
S’il y a un FriendsOfPHP/PHP-CS-Fixer dans les devDependencies, PhpStorm vérifiera si l’inspection correspondante est activée et si le jeu de règles est défini. Si ce n’est pas le cas, vous pouvez appeler Alt(⌥)+Entrée pour le corriger :

composer-json_quality_tools@2x

Améliorations apportées à l’inférence de type PHP

Le moteur d’inférence de type est le cœur de PhpStorm et plusieurs changements notables y ont été apportés.

Mise en évidence des balises @var redondantes
L’ajout de balises @var est un bon moyen de suggérer à PhpStorm le type de la variable. Mais comme nous améliorons constamment l’inférence de type, certaines de ces déclarations pourraient bien être redondantes car PhpStorm connaît déjà le type. Ces cas seront mis en évidence et pourront être supprimés en utilisant Alt(⌥)+Entrée et le correctif rapide “Remove @var”.

php-type-inf_var

Le suivi des types null est une tâche difficile et il y avait des endroits où PhpStorm ne fonctionnait pas. Dans la version 2020.1, PhpStorm sait quand une variable peut être null ou non. Voici quelques exemples.

php-type-inf_null

type-inference_null-guard

Saisie automatique du code pour un tableau initialisé
Supposons que vous ayez un tableau avec des éléments connus et que vous essayiez ensuite d’itérer à travers celui-ci. La saisie automatique du code ne fonctionnait pas ici auparavant car les informations sur le type étaient perdues. Maintenant, avec la version 2020.1, tout fonctionne.

php-type-inf_array_completion

Saisie automatique du code dans array_map/filter
La saisie automatique fonctionne désormais pour les éléments de tableau dans le corps des fermetures passées à array_map() et array_filter().

type-inference_array_map@2x

Couverture du code avec PCOV et PHPDBG

Vous pouvez obtenir un rapport de couverture du code en utilisant Xdebug. Mais comme il s’agit avant tout d’un débogueur, il entraîne une surcharge importante. Pour accélérer les rapports de couverture, vous pouvez utiliser des outils plus légers tels que l’extension krakjoe/pcov ou PHPDBG qui est intégré à PHP 5.6 et ses versions ultérieures.

Les deux sont maintenant 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. Et ensuite effectuer des tests avec rapport de couverture en cliquant sur run_coverage_tr :

code-coverage

Pour en savoir plus sur les différences en matière de rapports de couverture entre Xdebug, PCOV et phpdbg, consultez le README de PCOV.

Boîte à outils PHPUnit

Dans PHPUnit 9, de nombreuses fonctionnalités ont été supprimées ou déclarées obsolètes. Pour accélérer la migration et éviter les erreurs, nous avons ajouté de nombreuses inspections et correctifs rapides.

phpunit_quick-fixes

De plus, vous pouvez maintenant créer un nouveau test pour une classe très rapidement en appelant Alt(⌥)+Entrée sur la déclaration de la classe et en sélectionnant Create New PHP Test.

phpunit_create_test@2x

Métadonnées

Les métadonnées avancées vous permettent de fournir des informations supplémentaires sur votre projet à PhpStorm et ainsi d’améliorer la saisie automatique et les inspections du code. Cette fonctionnalité est notamment utilisée dans le plugin Symfony et dans Laravel IDE Helper.

Plusieurs améliorations pour les métadonnées ont été ajoutées à PhpStorm 2020.1.

L’index des paramètres dans les directives override, map et type
Auparavant, il était possible d’ajuster le comportement du premier argument des fonctions en utilisant override(), map(), et type(). Dans PhpStorm 2020.1, vous pouvez maintenant spécifier un index de paramètres arbitraire :

metadata_override_with_index

Accès aux propriétés via __get
Si vous essayez d’accéder aux propriétés avec le tour de magie __get(), les informations sur le type sont perdues. Vous pouviez utiliser des balises @var ou @property supplémentaires, mais cela ne fonctionnait pas toujours. Vous pouvez désormais tout spécifier grâce aux métadonnées.

metadata_getters

Saisie automatique pour les clés des objets implémentant ArrayAccess
Les métadonnées prenaient en charge les objets ArrayAccess, mais ne suggéraient que le type des valeurs. Désormais, les clés disponibles peuvent également être saisies automatiquement.

metadata_arrayaccess_keys

Points de sortie personnalisés
PhpStorm considère les fonctions telles que die() et exit() ou le lancement d’exceptions comme mettant fin à l’exécution. Mais les applications peuvent avoir des points de sortie plus complexes, par exemple, un simple dd() ou un trigger_error() avec un argument E_USER_ERROR.

Dans PhpStorm 2020.1, vous pouvez marquer n’importe quelle fonction comme point de sortie et cela corrigera l’analyse du flux de contrôle en conséquence.

metadata_exitpoint

Icônes pour les fonctions dont le comportement a été modifié via les métadonnées
Les fonctions dont le comportement a été modifié en utilisant override(), exitPoint(), ou expectArguments() auront désormais une icône dans la gouttière. Cliquer sur l’icône ouvrira le fichier .phpstorm.meta.php où le comportement a été modifié.

metadata_guttericons

Vous pouvez masquer ces icônes sous Preferences/Settings | Editor | General | Gutter Icons.

Classement assisté par machine learning pour la saisie automatique du code

Le classement des suggestions à l’aide du machine learning permet de trier la liste des suggestions de manière plus optimale.

Comment voir le ML en action ?
Par défaut, le classement assisté par ML est désactivé. Nous ne voulons pas qu’il nous vole notre travail ! Pour l’activer, allez dans Preferences/Settings | Editor | General | Code Completion et activez deux options : Rank completion suggestions based on Machine Learning et PHP.

Si vous activez l’option Show position changes in completion popup, la liste de saisie automatique indiquera comment l’ordre des éléments a changé.

ml-completion

Nous prévoyons d’empêcher l’IA de nous remplacer et de continuer à travailler sur cette fonctionnalité dans les prochaines versions.

Nouvelles inspections

Une propriété privée peut être remplacée par une variable locale
La définition d’une propriété sera mise en évidence si elle n’est utilisée que dans une seule méthode et est immédiatement écrasée. Dans ce cas, vous pouvez appeler le correctif rapide Replace property with local variable avec Alt(⌥)+Entrée.

inspection_private-to-local@2x

Initialisation de propriété inutile
Supposons qu’une propriété privée ait une valeur par défaut dans une classe, mais qu’une autre valeur soit immédiatement attribuée à la propriété dans le constructeur. Dans ce cas, la valeur par défaut est redondante et n’apporte rien.

Les initialisations non utilisées seront mises en évidence et peuvent être supprimées en utilisant le correctif rapide Remove redundant initializer avec Alt(⌥)+Entrée .

inspection_redund_prop_init@2x

Changer le type de propriété selon la valeur par défaut dans PHP 7.4
php-74_default_type_mismatch@2x

Opérateurs ternaires redondants
Phpstorm met en évidence les expressions ternaires triviales que vous pouvez remplacer par des expressions plus simples à l’aide du correctif rapide Alt(⌥)+Entrée.

ternary_redundant

Pass-by-ref excessifs
L’utilisation d’un pass-by-ref peut avoir des conséquences inattendues et c’est l’une des raisons pour lesquelles Nikita Popov suggère de permettre une annotation explicite pass-by-reference sur le site d’appel en PHP.

En attendant, PhpStorm 2020.1 mettra en évidence les paramètres qui sont déclarés comme pass-by-ref mais qui ne sont pas utilisés en tant que tels. Ils peuvent être retirés en toute sécurité à l’aide d’un correctif rapide avec Alt(⌥)+Entrée.

pass-by-ref_param

Il en sera de même pour les tableaux avec un pass-by-ref dans des boucles foreach :

pass-by-ref_array

La suppression d’un bloc PHPDoc inutile qui n’a que des déclarations de type est maintenant facilitée grâce à un correctif rapide adéquat.

phpdoc_remove_redundant

Notez que par défaut, l’inspection est au niveau Info, ce qui signifie qu’elle ne mettra rien en évidence. Si vous voulez que les blocs PHPDoc redondants soient mis en évidence, définissez le niveau de gravité pour l’inspection Redundant PHPDoc comment sur Weak Warning ou plus haut dans Preferences/Settings | Editor | Inspections.

Mise à jour de la refactorisation Move method

Il est parfois judicieux de transférer une méthode à une autre classe. Si cette méthode est utilisée plusieurs fois dans la base de code du projet, PhpStorm peut vous aider.

Auparavant, il fallait d’abord rendre la méthode statique, puis appeler une autre action pour déplacer une méthode. Dans PhpStorm 2020.1, la refactorisation Move method a été repensée en une action simple. Les opérations et les fenêtres contextuelles inutiles ont été supprimées et tout se fait en une seule fois.

Placez le curseur sur la méthode et appuyez sur F6 (ou Ctrl(⌃)+T, 3). Sélectionnez ensuite une classe de destination et le tour est joué.

move_refactoring

Débogage PHP dans le client HTTP

Vous n’avez plus besoin de vous préoccuper des paramètres ou d’installer l’extension dans votre navigateur pour commencer le débogage. Il vous suffit de créer une requête HTTP dans un fichier .http et de l’exécuter en lançant la commande PHP Debug, disponible dans le menu Alt(⌥)+Entrée, ou en cliquant sur l’icône de lecture gutter_play_tr. Un cookie XDEBUG_SESSION sera alors automatiquement ajouté à la requête.

http-client_php_debug

Et encore quelques petites choses pour PHP

Les éléments @deprecated sont affichés barrés dans l’arborescence de la structure.
Ctrl(⌘)+F12

deprecated_structure_view_cut

Mise en évidence pour les balises correspondantes <?php / ?>

php_tags_highlight@2x

Passer à l’ouverture/fermeture des crochets
Maj+Ctrl+M (⌃+M)

jump_brace@2x

Personnalisation de l’analyseur lexical pour Twig
Parfois, il peut être nécessaire de changer les caractères de la balise pour les modèles Twig, par exemple si vous utilisez Angular, qui a la même syntaxe.
Vous pouvez maintenant faire cela via Preferences/Settings | Languages & Frameworks | PHP | Twig.

EDI

Vérificateur orthographique et correcteur grammatical avancé

Le plugin Grazie est inclus nativement dans PhpStorm. Il vérifie non seulement les fautes d’orthographe, mais aussi les erreurs de grammaire et de style. Grazie prend en charge 16 langues et toutes les vérifications sont effectuées localement, sans envoi de vos données à des tiers.

Les vérifications sont activées pour les fichiers texte par défaut.
Vous pouvez également activer Grazie pour tous les littéraux de chaînes, commentaires, blocs PHPDoc et messages de commit.

Pour PHP, vous pouvez activer Grazie dans le menu Settings/Preferences | Editor | Proofreading | Grammar.

grazie

Mode LightEdit

Parfois, vous pouvez avoir besoin de consulter ou de corriger rapidement un fichier. Dans ce cas, ouvrir tout un EDI pour un seul fichier semble excessif, mais vous voulez quand même utiliser la mise en évidence et d’autres fonctionnalités auxquelles vous êtes habitué. C’est précisément pour cela que le mode LightEdit existe.

Voici comment cela fonctionne : si vous ouvrez un fichier depuis la ligne de commande ou le menu contextuel du système d’exploitation et que PhpStorm n’est pas en cours d’exécution, le fichier s’ouvrira dans LightEdit. Veuillez cependant noter que si une instance complète de PhpStorm est active, le fichier s’ouvrira simplement dans celle-ci.

lightedit

JetBrains Mono est maintenant la police par défaut

jetbrainsmono

Mode Zen

Ce mode combine les modes Distraction Free et Fullscreen, pour vous permettre de vous plonger totalement dans votre code et de rester concentré.e.
Activez-le sous View | Appearance | Enter Zen Mode.

zenmode

IU

Sessions de terminal fractionnées

Au lieu d’ouvrir de nouveaux onglets et de passer de l’un à l’autre, vous pouvez désormais diviser la fenêtre et ouvrir plusieurs sessions dans un seul onglet. Pour ce faire, sélectionnez Split Horizontally / Vertically dans le menu contextuel.

split_terminal

Thème IntelliJ Light

Le thème clair a été mis à jour. Il est désormais unifié afin d’avoir la même apparence sur tous les systèmes d’exploitation et son nom a été changé en IntelliJ Light.

Personnalisation de la barre d’état

Dans le menu contextuel, vous pouvez sélectionner les informations à afficher dans la barre d’état située dans le coin inférieur droit de votre fenêtre EDI.

customize_statusbar

Configuration

Configuration SSH unifiée

Auparavant, vous deviez reconfigurer votre connexion SSH chaque fois que vous la réutilisiez dans le déploiement, les interprètes à distance ou le terminal SSH.

Vous pouvez désormais ajouter ou modifier toutes les connexions SSH au même endroit via Preferences/Settings | Tools | SSH Configurations et les utiliser partout et aussi souvent que vous en avez besoin.

unified_ssh_config

unified_ssh_remote_php

Le chemin d’accès aux configurations de l’EDI a changé

Par exemple, sur macOS :

- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1

Pour en savoir plus, consultez l’article d’aide.

Plus de flexibilité lors du partage des configurations d’exécution

Auparavant, les configurations d’exécution étaient stockées dans le dossier .idea, que de nombreuses personnes ajoutent à .gitignore dans son intégralité (il existe cependant une meilleure alternative). Vous pouvez maintenant choisir n’importe quel endroit pour sauvegarder la configuration d’exécution et la partager avec vos collègues via votre VCS. Cela peut être particulièrement pratique lors de l’intégration de nouveaux collaborateurs : prenez le projet, ouvrez-le dans PhpStorm et lancez-le d’un simple clic.

Pour ce faire, sélectionnez l’option Store as project file dans la fenêtre Run/Debug configuration, puis cliquez sur l’icône engrenage pour sélectionner le chemin souhaité dans le projet.

run-configurations_share

Contrôle de version

Nouvelle fenêtre d’outils Commit

La fenêtre Commit est disponible en mode non-modal et s’affiche sur la gauche. De cette façon, vous pouvez toujours consulter et travailler sur d’autres fichiers pendant que le commit est en cours de préparation. Cela permet également d’afficher plus d’informations sur les modifications à l’écran.

La nouvelle fenêtre d’outils Commit est activée par défaut pour les nouveaux utilisateurs mais désactivée pour ceux qui avaient déjà installé PhpStorm.

Vous pouvez l’activer avec l’option Use non-modal commit interface du menu Preferences / Settings | Version Control | Commit.

commit_flow

Amélioration du workflow des branches Git

La branche Git actuelle est indiquée dans le coin inférieur droit de la fenêtre de l’EDI. Si vous cliquez dessus, la fenêtre ouvrira le dialogue VCS | Git | Branches.

Nous avons ajouté une barre de recherche à cet endroit. Le bouton Refresh met à jour la liste des branches distantes. Et nous avons ajouté un indicateur pour chaque commit : entrant (bleu) ou sortant (vert).

git_branches

Installation de Git depuis l’EDI

Lorsque vous clonez un référentiel Git existant, PhpStorm recherche l’exécutable Git sur votre machine et vous propose de le télécharger et de le configurer pour vous si l’EDI ne le trouve pas.

Workflow interactif Rebase retravaillé

Git Rebase vous permet de réécrire l’historique des commits. Vous pouvez maintenant vous débarrasser rapidement des commits temporaires, corriger un message ou réorganiser l’ordre des commits. Bien sûr, vous pouvez faire tout cela manuellement depuis le terminal, mais dans PhpStorm vous pouvez aussi voir le contenu du commit et des diffs.

Pour commencer, vous devez sélectionner le commit de base souhaité dans l’historique des commits. Ensuite, sélectionnez Interactively rebase from here dans le menu contextuel.

git_rebase

Outils de base de données

PhpStorm inclut nativement la quasi totalité des fonctionnalités de DataGrip. Vous pouvez consulter la page Nouveautés des outils de base de données pour voir la présentation de ces nouvelles fonctionnalités.

Web

Comme d’habitude, toutes les mises à jour de WebStorm 2020.1 ont également été intégrées dans PhpStorm.

Une liste complète des modifications de cette version figure dans les notes de publication qui sont particulièrement détaillées.

C’est tout pour aujourd’hui. Merci de nous avoir lus jusqu’au bout ! Nous serons ravis de répondre à vos questions et de recevoir vos suggestions, rapports de bugs et commentaires.

Prenez soin de vous !
L’Équipe JetBrains PhpStorm
The Drive to Develop

Auteur de l’article original en anglais : Roman Pronskiy