PhpStorm

Trucs et astuces concernant PhpStorm, l’IDE développé par JetBrains.

Intégration GitLab

PhpStorm propose des fonctionnalités permettant d’interagir avec GitLab, notamment pour faire des révisions de code ou valider des merge requests.

Créer un Access Token

Ouvrez GitLab depuis votre navigateur, et depuis le panneau de gauche cliquez sur votre photo de profil.

  • Choisissez Preferences.
  • Cliquez sur Access tokens.
  • Cliquez sur le bouton Add new token.
  • Définissez un nom, une description et une date d’expiration. La date d’expiration ne peut dépasser un an pour des raisons de sécurité ; il faudra donc re-générer un token une fois expiré.
  • Sélectionnez la portée du token (scope) : api, read_api, read_user.
  • Cliquez sur le bouton Create personal access token.
  • Copiez le token (vous ne pouvez le visualiser qu’une fois).

Configurez le token dans PhpStorm

Accédez tout d’abord à la vue Merge Requests.

Si la vue n’est pas disponible dans votre éditeur, allez dans le menu View → Tool Windows → Merge Requests.

Normalement, si vous ouvrez cette vue pour la première fois, PhpStorm vous demandera de créer un nouvel accès pour GitLab. Cliquez sur le bouton puis dans la popup qui s’ouvre, saisissez l’adresse du serveur GitLab.

Indiquez ensuite le token que vous avez créé ci-dessus, puis cliquez sur le bouton Log in.

Vous pouvez également gérer vos tokens d’accès depuis le menu File → Settings → Version control → GitLab.

Gestion des Merge Requests

Depuis la vue “Merge Requests” vous pouvez accéder aux requêtes qui vous sont assignées. Si vous double-cliquez sur une merge request, vous pouvez voir la ligne du temps ainsi que les commentaires & actions.

Pour faire la révision du code, vous pouvez double-cliquer sur un fichier pour en voir les modifications. N’importe où dans le code, vous pouvez alors faire un clic droit et sélectionner l’option Add Review Comment.

Une fois la révision du code terminée, il suffit de cliquer sur le bouton Submit Review, et de déterminer si des modifications doivent être apportées ou non.

Gestion des projets

La gestion des projets semble parfois peu intuitive dans PhpStorm. Seule la version Mac de l’IDE propose les onglets pour faciliter l’ouverture de plusieurs projets à la fois.

Attacher un projet

Les projets se présentent généralement sous forme d’un seul dossier ouvert, donc par exemple l’un de vos projets de micro-service. Cependant, vous voulez peut-être attacher un dossier en plus, dont votre projet dépend.

Pour ce faire :

  • Ouvrez le menu File → Attach project.
  • Choisissez un dossier à attacher.
  • Validez : le dossier apparaitra au côté du dossier déjà ouvert.

Organiser en groupes

Pour organiser vos projets en groupes, suivez les étapes ci-dessous :

  • Ouvrez le menu File → Recent projects → Manage projects.
  • A côté d’un projet, cliquez sur le menu vertical (ellipse).
  • Choisissez New project group et donnez-lui un nom.
  • Cliquez à nouveau sur le menu en ellipse.
  • Choisissez cette fois Move to group → <target group>.
  • Et voilà !

Notez que le projet actuellement ouvert n’apparaitra pas dans la liste, donc vous devez l’assigner à un groupe depuis une autre fenêtre de l’éditeur. De nouveau, cela n’est pas très intuitif…

Optimisation des performances

Pour aider à améliorer les performances de votre IDE, voici quelques pistes à explorer.

Désactiver les extensions

Désactiver certaines extensions peut parfois donner un petit boost de performances à votre IDE. Voici une liste (non-exhaustive) de ce qui peut être désactivé, en fonction de votre utilisation bien sûr.

Bundled plugins

  • Angular & AngularJS (Javascript & Frameworks)
  • Drupal
  • Hunspell
  • Joomla
  • Karma (Javascript & Frameworks)
  • React (Javascript & Frameworks)
  • Vagrant

Dans ce cas vous constaterez que j’ai désactivé des extensions pour Angular et React, car je développe notamment en Vue.js. C’est donc à adapter en fonction de vos besoins.

Downloaded plugins

  • PHP Annotations
  • PHP Toolbox

Language packs (Japanese, Korean, Simplified Chinese)

Quand vous désactivez des extensions, l’IDE demande parfois à redémarrer. Certaines peuvent simplement être « déchargées ». Dans les deux cas cela peut prendre du temps en fonction du nombre de projets ouverts.

Exclure le dossier vendor de l’indexation

Quand vous avez de nombreux projets de micro-services ouverts, vous pouvez considérer l’exclusion du dossier vendor. Cependant cela désactivera l’auto-complétion pour les librairies tiers.

Pour exclure un dossier :

Effectuez un clic droit sur le dossier à exclure > Mark directory as et choisissez Excluded. Cela lui assignera la couleur rouge pastel par défaut.

Modifier la mémoire allouée

La mémoire allouée dépendra des capacités de votre machine. Pour modifier cela, allez dans le menu Help → Change memory settings.

La valeur par défaut est 2048 MiB. Vous pouvez la modifier sans relancer l’IDE, ou bien cliquer sur le bouton Save & Restart pour appliquer les paramètres immédiatement, tout en relançant PhpStorm.

Modifier les options de la JVM

Les options suivantes proposent une balance entre performance et stabilité. Attention que cela remettra la valeur du heap size à 1024 MiB. Pour modifier les options, copiez le bloc suivant et allez dans Help → Edit customer VM options.

-server
-ea
-Xmx1024M
-XX:+UseG1GC
-XX:ReservedCodeCacheSize=512M
-XX:+OmitStackTraceInFastThrow
-Dsun.io.useCanonCaches=false
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:ActiveProcessorCount=4

Un redémarrage sera nécessaire.

Vue.js

Résoudre la configuration Webpack

Pour les anciens projets Vue utilisant Webpack, PhpStorm active normalement la résolution des liens vers les composants, ce qui permet d’accéder à ceux-ci à l’aide du raccourci CTRL+clic.

Dans le cas où cela ne fonctionnerait pas, il est possible de renseigner le fichier de configuration de base à PhpStorm. Pour ce faire, allez dans les paramètres de l’IDE puis ouvrez la catégorie Languages & Frameworks → Javascript → Webpack.

Changez la valeur du paramètre Detect webpack configuration files en Manually et indiquez le chemin du fichier.