Inside BAP

8 outils de qualité pour les développeurs PHP

Chez Bureaux À Partager, l’équipe tech est passée de 6 à 12 développeurs en un an ! En accueillant tout ce petit monde, il devenait nécessaire de définir des normes sur notre manière de coder. Ces règles de codage ont été facilitées par la mise en place d’outils que nos développeurs PHP utilisent au quotidien. 

Pourquoi utiliser ces outils ?

Nous utilisons la méthode agile Scrum et fonctionnons par sprints de 2 semaines. Après chaque complétion de story, nous faisons des relectures de code au sein de l’équipe mais des erreurs peuvent quand même nous échapper. C’est pourquoi nous avons installé dans notre environnement de développement les différents outils que je vous présente dans cet article.

Tous ces outils se branchent sur ce qu’on appelle des hooks de pre-commit. Ces hooks sont propres à Git et permettent de déclencher un ou plusieurs programmes à un moment donné.

Dans notre cas, les hooks se déclenchent avant chaque commit et vérifient la qualité du code écrit. On peut considérer ça comme une pré-relecture automatique de code.

Ces hooks de pre-commit déclenchent les outils suivants : PHPMD / PHPCS / Husky ainsi que les tests unitaires PHPUnit.

Quels outils utiliser quand on est développeur PHP ?

Ces outils d’analyse détectent des bugs par la lecture automatique du code. Ils sont particulièrement efficaces lorsqu’on fait l’effort en codant de spécifier les typages de nos variables, possible sur PHP7.

PHPMD / PHPCS

PHPMessDectector détecte les sources possibles de bugs, des méthodes ou des expressions trop complexes.

PHPCS (Code Sniffer) garantit le respect des conventions de développement PSR. Plus le nombre de développeurs augmente sur un projet, plus il est important de s’assurer de suivre une convention pour garantir l’uniformité du projet.

PHPStan

PHPStan est un outil d’analyse statique. Il détecte les problèmes de structure dans le code qui peuvent conduire à des bugs. Il a des niveaux de tolérance plus ou moins élevés. Nous ne l’utilisons qu’au premier niveau pour l’instant.

Exemple: Ci-dessous une erreur remontée automatiquement par PHPStan sur cette ligne de code :

sprintf('Lorem ipsum %s')

erreur phpstan outils développeurs

 

Notre outil d’intégration continue CircleCI rejoue les tests unitaires ainsi que PHPStan / PHPMD / PHPCS à chaque fois que nous ouvrons une Pull Request. L’objectif est de vérifier que les modifications apportées passent bien nos exigences de qualité.

D’autres outils pratiques pour les développeurs PHP

Husky

Husky nous permet d’avoir un historique Git le plus exploitable possible.

Nous nous imposons un format lorsque nous écrivons nos messages de commit. Notre formatage est le suivant :

  • fix: noindex is deprecated #MATCH-XXXX

La première partie du texte sert à identifier quel est le changement apporté. Voici les types qu’on accepte pour la première partie du message de commit :

# Type can be
#    feat     (new feature)
#    fix      (bug fix)
#    refactor (refactoring production code)
#    style    (formatting, missing semi colons, etc; no code change)
#    docs     (changes to documentation)
#    test     (adding or refactoring tests; no production code change)
#    chore    (updating grunt tasks etc; no production code change)

Puis on va ajouter un court descriptif de la modification et la référence du ticket associé.

Gitify

Gitify nous permet de recevoir une notification à chaque fois que quelqu’un nous soumet une Pull Request (relecture de code) sur Github. On est ainsi plus réactifs sur nos relectures de code et nous envoyons plus rapidement nos tickets en test.

Github Desktop

Avant, j’avais l’habitude d’utiliser Meld pour mes relectures mais j’ai vite été convertie à Github Desktop en arrivant dans l’équipe Bureaux À Partager. L’interface est bien plus agréable et son installation est plus simple.

Néanmoins, sur ce point, chaque personne de l’équipe a ses préférences : certains utilisent Git Kraken ou encore Sourcetree. Tant que des pré-relectures de code sont faites en amont d’une Pull Request, chacun a la liberté d’utiliser le logiciel qu’il préfère !

Prettier

Prettier permet de formater notre code automatiquement, corrigeant ainsi une partie des soucis remontés par PHPCodeSniffer comme les lignes de code trop longues.

Des plugins existent pour la plupart des éditeurs de code. Nous utilisons pour notre part les extensions VSCode et PHPStorm.

lolcommits

Ce n’est pas vraiment un outil de qualité mais lolcommits est une intégration plutôt fun qui nous prend en photo dès qu’on commit. On oublie qu’il est installé et ça génère des selfies pour le moins amusants… On vous laisse juger par vous-mêmes.

lolcommits outil développeur

Ces différents outils nous aident vraiment à garder un haut standard de qualité avec la croissance de l’équipe. Ils permettent de faciliter les relectures en éliminant en amont toutes les erreurs de code « triviales » liées à la syntaxe.

Nous sommes en amélioration continue et toujours à l’affût de nouveaux outils qui peuvent nous être utile au quotidien ! Ces différents outils nous ont d’ailleurs été suggérés par des membres de l’équipe, au fil des découvertes de chacun. Et vous, quels sont les outils que vous utilisez au quotidien dans votre métier de développeur ?

Laïla

Développeuse web

Laïla est développeuse full-stack chez Bureaux A Partager et vous fera découvrir la face cachée des développeurs.

Copyright © 2019 Bureaux à partager. Tous droits réservés