editorconfig

 

Vous savez, ce petit fichier caché à la racine de votre projet ? Si comme moi vous n'y aviez jamais prêté attention, voici à quoi il sert.

Face à la multitude des projets, languages, codings standards, bonnes pratiques, mais aussi la variété apportée par les intervenants au cours du cycle de vie d'un projet, il n'est pas toujours évident de mettre tout le monde d'accord et de s'informer quant aux règles en vigueur. Les environnements, IDES et habitudes de chacun ont donc souvent pour résultat du code hétérogène. Indentations, retours à la ligne et autres whitespaces sont les premiers à en faire les frais.

EditorConfig répond à cette problématique en permettant de s'assurer d'un minimum d'homogénéité dans le code (pourvu que votre IDE en soit capable !).

De quoi s'agit-il ?

C'est un simple fichier nommé .editorconfig, placé à la racine du projet et structuré de la même manière qu'un fichier ini. La plupart des projets opensource en ont aujourd'hui un par défaut. La liste complète se trouve ici.

On pourra y configurer l'ensemble des règles que l'on souhaite partager dans l'équipe : EOL, indentation, saut de ligne final, encodage, etc. Ces règles peuvent être définies pour tous les fichiers ou par types. Voici un exemple de .editorconfig pour Symfony 3 :


;top-most EditorConfig file
root = true

; Unix-style newlines
[*]
end_of_line = LF

[*.php]
indent_style = space
indent_size = 4

Pour spécifier différents types de fichiers, on pourra utiliser les patterns suivants (non exhaustif) :

  • [*] tous les fichiers
  • [*.py] python uniquement
  • [*.{php,js}] php ou js uniquement
  • [lib/**.js] tous les fichiers js dans le répertoire "lib"
  • [{file1,file2,file3}] un nom exact de fichier (file1, file2 ou file3)
  • [file?.md] file1.md, filea.md, file_.md, ...

Comment ça fonctionne :

Lorsque l'on ouvre un fichier avec notre IDE favori, il va chercher un .editorconfig dans le même dossier ; et remonter dans l'arborescence jusqu'à trouver un fichier .editorconfig root. On peut ainsi avoir une configuration globale et la surcharger dans certains dossiers. La configuration de l'éditeur est, logiquement, également surchargée. Plus besoin de se soucier de cette partie parfois fastidieuse selon les IDEs.

Concernant la reconnaissance des .editorconfig, cela dépend de l'IDE. Certains éditeurs le supportent nativement, pour d'autres il faudra installer un plugin.

Pour Phpstorm il faudra installer le plugin https://plugins.jetbrains.com/plugin/7294-editorconfig
Il est possible qu'une fois activé un onglet vert s'affiche pour informer d'une surcharge entre le format du fichier et la configuration dans le .editorconfig : EditorConfig is overriding Code Style for this file
Il suffit de cliquer sur OK. La combinaison des raccourcis Ctrl+Alt+L (reformater le code) et Ctrl+Alt+I (ré-indenter les lignes) fera le reste.

En conclusion :

Un fichier à mettre en place au plus tôt dans ses projets pour éviter les commits de reformatage !
Et voilà, plus besoin de rager contre le collègue qui a l'habitude de mettre des tabulations partout !

Les réfs :

Le site officiel : http://editorconfig.org
La liste complète des propriétés configurables : https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
Liste des projets editorconfig-ready : https://github.com/editorconfig/editorconfig/wiki/Projects-Using-EditorConfig

Un commentaire

  1. C’est effectivement très séduisant au premier abord !

    J’ai testé EditorConfig avec IDEA et trop peu de paramètres sont implémentés. Ceux cités ici fonctionnent bien.

    Par contre, il est par exemple impossible de configurer la position des accolades ou celle des espaces autour des opérateurs, ce qui est quand même la base du code formatting.

    La liste des propriétés intéressantes à implémenter se trouve ici: https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *