Passer au contenu principal

Qu’est-ce que Laravel Pint

Laravel Pint est un outil de correction automatique du style de code basé sur PHP CS Fixer. Prêt à l’emploi sans configuration, il formate le code selon les conventions Laravel. En automatisant les remarques de style, vous vous concentrez sur les vraies discussions de code review.

Installation

Pint est installé automatiquement dans les nouvelles applications Laravel. Sinon, ajoutez-le via Composer.
composer require laravel/pint --dev

Utilisation

Base

Corrige tous les fichiers .php du projet.
./vendor/bin/pint
Vous pouvez cibler un dossier ou un fichier.
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php

Options

OptionDescription
--testVérifie sans modifier ; code de sortie non nul si erreur
--dirtyNe cible que les fichiers modifiés non commit
--diff=[branch]Fichiers différents par rapport à la branche indiquée
--repairCorrige et retourne un code non nul si des modifications ont eu lieu
--parallelExécution parallèle (expérimental)
--max-processes=4Nombre max de processus (avec --parallel)
-vDétail des changements
--configChemin d’un pint.json
--presetPreset à utiliser
# Sans modification
./vendor/bin/pint --test

# Uniquement les fichiers non commit
./vendor/bin/pint --dirty

# Parallèle
./vendor/bin/pint --parallel

Configuration

Créez un pint.json à la racine.
{
    "preset": "laravel"
}
Ou précisez le chemin :
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

Presets

Un preset est un ensemble de règles. laravel est le défaut, optimal pour les projets Laravel.
PresetDescription
laravelStyle Laravel recommandé (défaut)
psr12Standard PSR-12
perPER Coding Style
symfonyStyle Symfony
emptyAucune règle, à composer
./vendor/bin/pint --preset psr12

Personnalisation des règles

Activez / désactivez individuellement dans pint.json. Consultez le PHP CS Fixer Configurator.
{
    "preset": "laravel",
    "rules": {
        "simplified_null_return": true,
        "array_indentation": false,
        "new_with_parentheses": {
            "anonymous_class": true,
            "named_class": true
        }
    }
}

Exclusions

Exclure des dossiers :
{
    "exclude": [
        "my-specific/folder"
    ]
}
Exclure via un pattern de nom :
{
    "notName": [
        "*-my-file.php"
    ]
}
Exclure un chemin précis :
{
    "notPath": [
        "path/to/excluded-file.php"
    ]
}

Configuration recommandée

Exemple efficace de pint.json.
{
    "preset": "laravel",
    "rules": {
        "no_unused_imports": false,
        "strict_comparison": true,
        "declare_strict_types": true
    }
}
Raisons :
RègleEffet
no_unused_importsfalse conserve les use non utilisés. Par défaut Pint les supprime (true) : cette option n’est pas nécessaire dans un projet Laravel standard
strict_comparisonRemplace == par === et != par !== pour éviter les bugs de conversion de type
declare_strict_typesAjoute automatiquement declare(strict_types=1); en tête de fichier
strict_comparison et declare_strict_types imposent un typage strict. Sur un projet existant, la première exécution peut modifier beaucoup de fichiers. À adopter dès le départ sur un nouveau projet.
no_unused_imports est surtout utile en développement de package. Par défaut, Pint supprime les use inutilisés (true) ; il n’est donc pas nécessaire dans un projet Laravel classique. Dans les packages, les imports de traits ou d’interfaces jouent un rôle d’activation, donc false puis true selon les cas est pratique.

Scripts composer.json

Ajoutez des scripts pour lancer pint plus facilement.
{
    "scripts": {
        "pint": "./vendor/bin/pint",
        "pint:test": "./vendor/bin/pint --test"
    }
}
# Corrige
composer pint

# Vérifie sans modifier
composer pint:test
En CI, utilisez composer pint:test pour détecter les violations sans modifier les fichiers. --test retourne un code non nul en cas d’erreurs.

Automatisation via GitHub Actions

Exécutez Pint et committez automatiquement les corrections à chaque push.
1

Configurer les permissions du workflow

Dans Settings > Actions > General > Workflow permissions, activez « Read and write permissions ».
2

Créer le workflow

.github/workflows/lint.yml :
name: Fix Code Style

on: [push]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        php: [8.4]

    steps:
      - name: Checkout code
        uses: actions/checkout@v5

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          tools: pint

      - name: Run Pint
        run: pint

      - name: Commit linted files
        uses: stefanzweifel/git-auto-commit-action@v6
Ce workflow lance Pint à chaque push et commit les corrections automatiquement.
Les corrections arrivent avant la revue, ce qui réduit les remarques de style. Corrigez d’abord tout localement puis ajoutez le workflow pour éviter les commits en trop.
Dernière modification le 13 juillet 2026