Comment marche la configuration dans PhpStorm 2017

Pour le développeur, PhpStorm 2017 présente l'intérêt d'être éminemment configurable. Les possibilités offertes touchent à tous les aspects ou presque de cet IDE, tout particulièrement l'interface utilisateur (UI) qui peut être très finement ajustée.
Configuration de la présentation du code PHP dans PhpStorm 2017.3
Pour autant, la manière de s'y prendre a de quoi dérouter. A tout instant, il est possible de modifier un paramètre via pas moins de trois moyens :
  • dans l'écran d'accueil, le bouton Configuration, puis Settings ;
  • dans l'éditeur d'un projet, le menu File, puis Settings ;
  • dans l'éditeur d'un projet, le menu File, puis Default Settings.
Et encore faut-il compter avec le fait que dans certains cas, un paramètre peut être modifié en spécifiant que la modification touche un "profil" ou un "schéma".
Le problème, c'est que PhpStorm n'offre pas de point d'entrée sur la configuration qui soit véritablement déterminé en fonction des besoins de l'utilisateur. Comment modifier un paramètre et répercuter cette modification sur un ensemble de projets ? Comment modifier un paramètre et que cela ne vaille que pour tous les projets à venir ? A l'utilisateur de deviner comment s'y prendre pour trouver les réponses à ces questions pourtant élémentaires.
Une exploration des possibilités offertes par PhpStorm 2017.3 permet toutefois de clarifier.
Click here to read this article in english.

Les types de paramètres de la configuration

Commençons par clarifier la notion de paramètre (setting). Ils sont de deux types :
  • ceux qui s'appliquent à l'IDE ;
  • ceux qui s'appliquent aux projets.
Par exemple, les paramètres de Editor / Font s'appliquent à l'IDE, et les paramètres de Editor / Code Style s'appliquent à un projet (on le devine d'après la petite icône se trouvant à sa droite).
Paramètre pour l'IDE et pour un projet dans PhpStorm 2017.3
Dans la version 2017.3 de PhpStorm, les paramètres s'appliquant aux projets sont regroupés dans diverses catégories, dont Appearance and Behaviour, Editor et Version Control.

Quelques tests pour comprendre comment la configuration fonctionne

Démarrons PhpStorm pour la première fois (la manoeuvre peut être rééditée après une installation en supprimant le contenu de C:\Users\<utilisateur>\.PhpStorm2017.3). Adoptons le style "Darcula" pour ne pas nous user les yeux et enchaînons directement sur une configuration par défaut.
Sur l'écran d'accueil, cliquons sur Configure et sélectionnons Settings.
Configuration de puis l'écran d'accueil de PhpStorm 2017.3
Rendons-nous dans Editor / Code Style / PHP. Le schéma sélectionné étant Default.
Configuration de la tabulation pour PHP dans PhpStorm 2017.3
Cochons Use tab character et passons Tab size à 8. Dans C:\Users\<utilisateur>\.PhpStorm2017.3\config, cela entraîne la création de deux répertoires :
  • Un répertoire codestyles contenant un fichier Default.xml. Comme on peut s'y attendre, ce fichier contient notamment l'état des paramètres :
  • Un répertoire options contenant toute une série de fichiers, dont un fichier code.style.schemes qui contient notamment ceci :
Retournons dans Editor / Code Style / PHP. Sélectionnons le schéma Project.
Sélection du schéma "Project" dans PhpStorm 2017.3
Il apparaît que Use tab character n'est pas coché et que Tab size est à 4. Cochons Use tab character et passons Tab size à 16. Dans C:\Users\<utilisateur>\.PhpStorm2017.3\config\options, cela entraîne la modification du fichier code.styles.schemes :

Retournons dans Editor / Code Style / PHP et sélectionnons simplement le schéma Default. Le fichier code.styles.schemes est de nouveau modifié pour refléter le schéma adopté :
Là-dessus, créons un nouveau projet à partir d'un répertoire vide et rajoutons-lui un nouveau fichier PHP.
Dans l'éditeur, une tabulation produit bien un caractère tabulation de 8 caractères. C'est donc le schéma Default qui a été pris en compte, comme attendu.
Il apparaît que le répertoire du projet contient un répertoire .idea. Dans ce dernier, on trouve un répertoire codeStyles qui contient deux fichiers :
  • codeStyleConfig.xml, qui mentionne que pour les settings de la catégorie Code Style, c'est le schéma Default qu'il faut utiliser :
  • Project.xml qui reprend ce qui a déjà été vu dans code.styles.schemes :
    
    	
    		
    
    
L'IDE donne accès à deux nouvelles possibilités pour modifier les settings : File / Settings (Ctrl + Alt + S) et File / Default Settings.
Sélectionnons File / Settings, et rendons-nous dans Editor / Code Style / PHP (ce qui ne sera plus indiqué par la suite, pour ne pas surcharger cette rédaction). Le schéma sélectionné étant toujours Default, Passons Tab size à 2. Seul le fichier Default.xml est modifié pour refléter l'état des paramètres :
Dans l'éditeur, la tabulation occupe désormais 2 caractères.
Sélectionnons de nouveau File / Settings. Cette fois, sélectionnons le schéma Project. Use tab character est coché, et Tab size est à 16. Contentons-nous de valider. Seul le fichier codeStyleConfig.xml est modifié pour indiquer que c'est le schéma Project qu'il faut désormais utiliser :
De fait, dans l'éditeur, la tabulation occupe désormais 16 caractères.
Sélectionnons de nouveau File / Settings. Le schéma Project étant toujours sélectionné, passons Tab size à 6. Seul le fichier Project.xml est modifié :
Dans l'éditeur, la tabulation occupe désormais 6 caractères.
Sélectionnons maintenant File / Default Settings. Il apparaît que le schéma Default est sélectionné, que Use tab character est coché et que Tab size est à 2. Sélectionnons le schéma Project. Il apparaît que Use tab character est coché et que Tab size est à 16.

Lumière sur le fonctionnement de la configuration

Que retenir de tout cela ? Pour ce qui concerne un paramètre qui s'applique aux projets (pour rappel, un paramètre s'applique à l'IDE ou aux projets) :
  • modifier le schéma Default via File / Default Settings revient à le modifier via File / Settings ou, depuis l'écran d'accueil, via Configuration / Settings ;
  • modifier le schéma Project via File / Default Settings ne revient pas à le modifier via File / Settings, mais à cela revient à le modifier, depuis l'écran d'accueil, via Configuration / Settings.
Lorsqu'un projet est créé, il est doté d'une configuration qui est une copie de la configuration par défaut d'un projet telle que définie via l'écran d'accueil (et éventuellement modifiée via File / Default Settings depuis n'importe quel projet). Cette configuration décrit l'état de paramètres s'appliquant aux projets uniquement. Or il existe deux catégories de paramètres de cette espèce-là :
  • Des paramètres dont la valeur est toujours spécifique au projet. A partir du moment où ce dernier est créé, toute modification du paramètre ne peut concerner que ce projet spécifiquement, étant décentralisée dans son répertoire .idea\codeStyles. Par exemple, c'est le cas des paramètres de la catégorie Editor / Copyright / Copyright Profiles, comme on peut le deviner en notant la mention For current project en haut de sa page de configuration.
    Signalement d'un paramètre par projet uniquement dans PhpStorm 2017.3
    Depuis l'écran d'accueil, il est possible de modifier ce paramètre après avoir créé un projet, mais cela n'affectera jamais la configuration du projet en question. Cette dernière ne pourra jamais être modifiée que depuis le projet, via File / Settings.
  • Des paramètres dont la valeur peut être soit spécifique au projet, soit partagée entre tous les projets. Par exemple, c'est le cas des paramètres de la catégorie Editor / Code Style / PHP. Dans la page de configuration, il est possible de sélectionner un schéma (cette notion peut être désignée autrement selon la catégorie considérée ; on parle de profil dans le cas de Editor / Inspections, par exemple) pour indiquer si le projet doit utiliser, pour cette catégorie de paramètres et celle-là uniquement, la configuration centralisée au niveau de l'IDE (le répertoire C:\Users\<utilisateur>\.PhpStorm2017.3\config) ou celle décentralisée au niveau du projet (son répertoire .idea\codeStyles).
D'où le rôle des fichiers :
  • Dans le répertoire C:\Users\<utilisateur>\.PhpStorm2017.3\config\options de l'IDE :
    • Dans le répertoire codestyles, Default.xml contient les valeurs des paramètres du schéma Default :
      
      ...
      	
      
    • Dans le répertoire options, code.style.schemes contient les valeurs des paramètres du schéma Project... :
      
      
      ...et indique si les valeurs des paramètres à utiliser pour tout nouveau projet sont celle-ci ou celles du schéma Default figurant dans le fichier précédent :
      ou :
  • Dans le répertoire .idea\codeStyles d'un projet :
    • codeStyleConfig.xml indique si les valeurs des paramètres sont celles du schéma Project ou du schéma Default :
      ou :
    • Project.xml contient les valeurs des paramètres du schéma Project, définies lors de la création du projet à partir du fichier code.style.schemes et éventuellement modifiées au niveau du projet par la suite (via File / Settings, lorsqu'il est ouvert) :
      
      ...
      
      
Dans ces conditions, comment modifier la configuration après avoir créé des projets, et faire en sorte que cette modification impacte tous les projets en question ? Eh bien! ce n'est possible que pour les paramètres dont la catégorie permet une référence à la configuration centralisée au niveau de l'IDE :
  • Editor / Code Style (via un schéma)
  • Editor / Inspections (via un profil)
  • Editor / File and Code Templates (via un schéma)
On peut le tester. Le projet étant ouvert, sélectionnons File / Settings et sélectionnons le schéma Default (Use tab character coché, Tab size à 2). Fermons le projet. Dans l'écran d'accueil, cliquons sur Configure puis sélectionnons Settings. Le schéma Default étant sélectionné, passons Tab size à 7. Ouvrons de nouveau le projet. Dans l'éditeur, la tabulation occupe 7 caractères.
Cette limitation de la référence à une configuration centralisée a pu susciter l'ire de certains, comme ici.
Mais comme expliqué en réponse à cette intervention, il est toujours possible d'exporter une configuration (décentralisée au niveau d'un projet depuis le projet via File / Export Settings... ou centralisée au niveau de l'IDE via Export Settings) et de l'importer au niveau d'un projet (via File / Import Settings...) ou de l'IDE (via Import Settings). Cela concerne les catégories de paramètres suivants :
  • Code Style
  • Code Style (schemes)
  • Debugger
  • Default Project
  • Editor Colors
  • File Templates (schemes)
  • Look and Feel
Noter que lors d'une "session" de modification de paramètres, la modification d'un paramètre dans une page entraîne deux choses :
  • un Reset apparaît en haut à gauche de cette page pour rétablir les paramètres qu'elle contient dans leur état du début de la "session" ;
    Réinitialisation d'une page de paramètres dans PhpStorm 2017.3
  • les catégories de paramètres dont un paramètre au moins a été modifié sont affichées en bleu dans la liste des catégories.
    Signalement qu'un paramètre a été modifié dans PhpStorm 2017.3