EditorConfig | Poser les bases d'un style de code

12/06/2016

Le problème

Quand on travaille en équipe, par exemple dans le cadre de projets open-source, il parait absolument essentiel d’adopter un style de code commun. Pour certains d’entres nous, il n’y a pas plus insupportable de voir des espaces sur des lignes vides, des indentations mélangées à des espaces pour l’indentation, ou encore des no newline at end of file quand on fait un git diff.

La solution

EditorConfig propose une solution, au moins partielle, à ce genre de problèmes.

Par le biais d’un fichier .editorconfig, avec un certain format, placé à la racine de votre projet, il permet de préciser différents paramètres, tels que :

  • le style d’indentation (espaces ou tabulations)
  • la taille de l’indentation (réelle dans le cas de l’utilisation d’espaces, à l’affichage dans le cas de l’utilisation de tabulations)
  • le type de fin de ligne (lf, cr ou crlf)
  • l’encodage du fichier
  • l’assurance d’enlever les espaces inutiles
  • l’assurance d’avoir des lignes vierges en fin de fichier

Une fois ces paramètres précisés, comme dans l’exemple ci-dessous, il faut ensuite les appliquer. L’intérêt, c’est que ce soit fait de manière automatique, et pour tout le monde. Certains IDE prennent en compte de manière native le fichier :

  • C Lion
  • IDEA
  • RubyMine
  • SourceLair
  • WebStorm

Pour d’autres, il va falloir installer un plugin dédié :

  • Atom
  • Brackets
  • Notepad++
  • Eclipse
  • NetBeans
  • Sublime Text
  • et plus encore…

Exemple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root = true

[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[*.{html,js,json,css,less}]
indent_style = space

[Makefile]
indent_style = tab

[*.{html,js,json}]
indent_size = 4

[*.{css,less}]
indent_size = 2

Le fichier ci-dessus force certaines bonnes pratiques et paramètre les styles d’indentation pour différentes extensions de fichier.

Conclusion

EditorConfig permet de s’assurer de l’application de certains paramètres basiques par rapport au style de code, même quand les personnes n’utilisent pas le même IDE / éditeur de texte. Pour les quelques manipulations à faire pour le mettre en place (installer un plugin + un simple fichier sur chaque projet), le retour sur investissement me semble intéressant.

Mais je le répète, ce n’est qu’une base. Puisqu’elle n’est pas très contraignante, on peut l’intégrer partout. Cependant, pour que tout se passe comme sur des roulettes, mieux vaut aller plus loin que les quelques paramètres disponibles ici. On y reviendra dans un prochain article :)

Plus d’infos


Commentaires: