Twig-CS-Fixer : un bon ajout à ma CI/CD

Récemment, j’ai mis en place Twig-CS-Fixer dans la CI/CD de l’application WineSitting. Je l’ai découvert un peu par hasard grâce aux suggestions de GitHub, et il s’est révélé être une excellente addition. Voici pourquoi Twig-CS-Fixer est si cool.

Pourquoi Twig-CS-Fixer ?

Il existe bien la commande Symfony php bin/console lint:twig, mais elle ne fait remonter que les erreurs de syntaxe dans les fichiers Twig. Twig-CS-Fixer est un peu plus pointu puisqu’il fonctionne à la manière de PHP-CS-Fixer. Il va donc vérifier le style du code Twig, le nommage des fichiers, des dossiers et même des variables, afin qu’ils respectent les conventions définies. Il peut corriger certains éléments automatiquement, mais dans mon cas, c’est plutôt un outil de vérification.

Cela permet d’éviter les variations de style et de garder la base de code uniforme, ce qui est essentiel pour la lisibilité et la maintenance à long terme.

Intégration facile dans la CI/CD

L’avantage, c’est que lorsqu’un pipeline CI/CD est déjà en place, Twig-CS-Fixer est très simple à intégrer. Il suffit de l’installer via Composer et de lancer la commande vendor/bin/twig-cs-fixer lint templates/.

En fonction de votre configuration, il va s’exécuter automatiquement à chaque commit ou pull request… Garantissant que toutes les modifications respectent les standards définis.

Voici comment j’ai intégré Twig-CS-Fixer dans GitHub Actions :

name: Lint

on:
    push:
        branches:
            - main
    pull_request:
        branches:
            - main

jobs:
    linters-templates:
        runs-on: ubuntu-latest
        name: 'Templates'
        steps:
            -   uses: actions/checkout@v4
            -   uses: shivammathur/setup-php@v2
                with:
                    php-version: '8.1'
            -   name: Cache Composer packages
                id: composer-cache
                uses: actions/cache@v4
                with:
                    path: vendor
                    key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
                    restore-keys: |
                        ${{ runner.os }}-php-
            -   name: Install Dependencies
                run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
            -   name: Lint Twig templates
                run: php bin/console lint:twig src/ templates/ --env=prod
            -   name: Run Twig-CS-Fixer
                run: vendor/bin/twig-cs-fixer lint templates/ --report github

Impact

L’impact de la mise en place de Twig-CS-Fixer n’a pas été énorme. En effet, nous tâchions déjà de respecter les normes de base. Cela dit, l’outil a tout de même relevé quelques points à corriger que nous avions manqués, et il en a corrigé certains automatiquement.

Cette vérification supplémentaire nous assure une cohérence parfaite dans le code et c’est ça qu’on aime ❤️.

On retrouve le site officiel de Twig-CS-Fixer à l’adresse suivante : https://github.com/VincentLanglet/Twig-CS-Fixer