Skip to content

Créer une Pull Request avec QA automatique ★★ Intermédiaire ~15 min

Contexte

Créer une Pull Request nécessite plusieurs étapes : validation du code, exécution des tests, commit propre et création de la PR sur GitHub. Faire tout ça manuellement est chronophage et source d'erreurs.

Objectif

Créer une PR complète en une seule commande avec :

  • ✅ Validation PHPStan niveau 9
  • ✅ Exécution des tests unitaires
  • ✅ Commit bien formaté (Conventional Commits + emoji)
  • ✅ Titre et description de PR générés automatiquement
  • ✅ PR créée sur GitHub

Prérequis

Plugins :

  • git - Gestion des commits et PR
  • qa - PHPStan et qualité du code
  • review - Code review automatique

Outils :

  • Git configuré
  • GitHub CLI (gh) installé et authentifié
  • PHPStan configuré dans le projet
  • Tests PHPUnit configurés

Configuration : Aucune configuration particulière nécessaire.

Workflow Étape par Étape

Phase 1 : Créer la PR avec QA

Commande :

bash
/git:pr

Que se passe-t-il ?

  1. Analyse des modifications - Claude scanne les fichiers modifiés avec git status et git diff
  2. PHPStan niveau 9 - Validation statique stricte du code PHP
  3. Tests unitaires - Exécution de vendor/bin/phpunit
  4. Génération commit - Création d'un message au format Conventional Commits avec emoji
  5. Génération PR - Titre et description automatiques basés sur les changements
  6. Push + création - Push de la branche et création de la PR sur GitHub via gh pr create

Output attendu :

✅ PHPStan: 0 errors
✅ Tests: All passing (42 tests, 187 assertions)
✅ Commit: ✨ feat: add user authentication endpoint
✅ PR créée: https://github.com/user/repo/pull/123

Exemple Complet

Scénario : Ajouter un endpoint API

Contexte : Tu viens de développer un nouvel endpoint /api/users avec controller, tests et validation.

Fichiers modifiés :

  • src/Controller/UserController.php
  • tests/Controller/UserControllerTest.php
  • config/routes.yaml

Commande :

bash
/git:pr

Résultat :

Claude va :

  1. Analyser les 3 fichiers modifiés
  2. Lancer vendor/bin/phpstan analyse --level=9
  3. Lancer vendor/bin/phpunit
  4. Créer commit : ✨ feat(api): add user listing endpoint
  5. Créer PR avec titre : feat(api): Add user listing endpoint
  6. Description générée :
    markdown
    ## Summary
    - Add UserController with GET /api/users endpoint
    - Add comprehensive unit tests
    - Configure route in routes.yaml
    
    ## Test Plan
    - [x] PHPStan level 9 passes
    - [x] Unit tests pass (100% coverage)
    - [ ] Manual testing with Postman

URL de la PR : https://github.com/user/repo/pull/123

Variantes

PR simple sans QA

Si tu veux skipper la QA (déconseillé) :

bash
/git:commit
# Puis manuellement
gh pr create

PR avec review multi-agents

Pour une review approfondie avant création :

bash
/dev:review
/git:pr

Voir Code review automatisé.

PR en mode Continuous Delivery

Pour un workflow CD avec auto-merge :

bash
/git:git-cd-pr

Troubleshooting

Erreur PHPStan

Symptôme : PHPStan found 3 errors

Solution :

  1. Corriger les erreurs affichées
  2. Relancer /git:pr

Ou utiliser l'auto-fix :

bash
/qa:phpstan-resolver
/git:pr

Voir Résoudre erreurs PHPStan.

Tests en échec

Symptôme : Tests: 2 failures

Solution :

  1. Lire les erreurs de test
  2. Corriger le code
  3. Relancer /git:pr

Conflit avec la branche main

Symptôme : Cannot merge: conflicts detected

Solution :

bash
/git:conflit

Voir Résoudre les conflits.

GitHub CLI non authentifié

Symptôme : gh: not logged in

Solution :

bash
gh auth login

Liens Connexes

Use cases :

Plugins :

Documentation externe :

Tips & Best Practices

✅ Bonnes pratiques

  • Toujours lancer /git:pr plutôt que créer manuellement
  • Petites PR : idéalement < 400 lignes de diff
  • Tests d'abord : écrire les tests avant /git:pr
  • Rebase régulier : garder la branche à jour avec main

🔍 Optimisations

  • Pre-commit hook : ajouter PHPStan en pre-commit pour feedback immédiat
  • CI/CD : GitHub Actions qui re-vérifie PHPStan + tests
  • Templates PR : ajouter .github/PULL_REQUEST_TEMPLATE.md

🎯 Métriques de qualité

Une PR de qualité avec /git:pr c'est :

  • ✅ 0 erreur PHPStan
  • ✅ 100% tests passent
  • ✅ Couverture de code > 80%
  • ✅ Titre clair et descriptif
  • ✅ Description avec test plan

Checklist Validation

Avant de créer la PR :

  • [ ] Tous les fichiers modifiés sont intentionnels
  • [ ] Code refactorisé et propre (pas de dump(), var_dump())
  • [ ] Tests unitaires écrits et passent
  • [ ] PHPStan niveau 9 validé
  • [ ] Pas de conflits avec main
  • [ ] GitHub CLI authentifié

Après création :

  • [ ] PR visible sur GitHub
  • [ ] CI/CD lancé
  • [ ] Reviewers assignés (optionnel)
  • [ ] Labels ajoutés (optionnel)

Publié sous licence MIT