Skip to content

Corriger les commentaires de review PR ★★★ Avancé ~10 min ​

Contexte ​

Après une review de PR, il y a souvent plusieurs commentaires à corriger dans différents fichiers. Faire ces corrections manuellement prend du temps et on risque d'oublier certains commentaires.

Objectif ​

Corriger automatiquement tous les commentaires de review d'une PR en une seule commande avec :

  • ✅ Récupération automatique des commentaires GitHub
  • ✅ Analyse et regroupement par fichier
  • ✅ Corrections en batch avec MultiEdit
  • ✅ Commit automatique des changements
  • ✅ Push vers la PR

Prérequis ​

Plugins :

  • git - Gestion des commits et PR
  • github - Interaction avec GitHub

Outils :

  • GitHub CLI (gh) authentifié
  • Git configuré
  • PR existante avec commentaires

Configuration : Aucune configuration particulière nécessaire.

Workflow Étape par Étape ​

Phase 1 : Récupérer et corriger les commentaires ​

Commande :

bash
/git:fix-pr-comments 123

Où 123 est le numéro de la PR.

Que se passe-t-il ?

  1. Récupération des commentaires - Via gh pr view 123 --comments
  2. Analyse - Regroupement par fichier et type de correction
  3. MultiEdit - Corrections en batch sur tous les fichiers
  4. Validation - Vérification que tout compile
  5. Commit - Commit avec message descriptif
  6. Push - Push automatique vers la PR

Output attendu :

✅ 8 commentaires récupérés depuis PR #123

Corrections à appliquer :
- src/Controller/UserController.php : 3 corrections
- src/Service/EmailService.php : 2 corrections
- tests/Controller/UserControllerTest.php : 3 corrections

✅ Corrections appliquées avec MultiEdit
✅ Tests passent
✅ Commit: 🔧 fix(review): address PR #123 comments
✅ Push vers origin/feature-branch

Résumé :
- 8/8 commentaires corrigés
- 3 fichiers modifiés
- PR prête pour re-review

Exemple Complet ​

Scénario : PR avec 5 commentaires de review ​

Contexte : PR #87 "Add user authentication" avec commentaires sur :

  1. Typo dans le nom de variable
  2. Méthode trop longue à refactorer
  3. Test manquant pour cas d'erreur
  4. Import inutilisé à supprimer
  5. Documentation à ajouter

Commentaires GitHub :

@reviewer:
src/Security/Authenticator.php:42
"Rename $usr to $user for clarity"

@reviewer:
src/Security/Authenticator.php:58
"Extract validation logic to private method"

@reviewer:
tests/Security/AuthenticatorTest.php:24
"Add test for invalid credentials case"

@reviewer:
src/Controller/AuthController.php:12
"Remove unused import Symfony\Component\HttpFoundation\Response"

@reviewer:
src/Security/Authenticator.php:15
"Add PHPDoc for authenticate() method"

Commande :

bash
/git:fix-pr-comments 87

Corrections appliquées automatiquement :

1. Renommage variable :

php
// Avant
private function validateUser($usr): bool

// Après
private function validateUser(User $user): bool

2. Extraction méthode :

php
// Avant
public function authenticate(): Token
{
    if (!$credentials) throw new AuthException();
    if (!$this->validator->validate($credentials)) throw new AuthException();
    if (!$user = $this->repository->findByEmail($credentials->email())) {
        throw new AuthException();
    }
    // ... 10 more lines
}

// Après
public function authenticate(): Token
{
    $this->validateCredentials($credentials);
    $user = $this->findUser($credentials);
    return $this->createToken($user);
}

private function validateCredentials(Credentials $credentials): void
{
    if (!$credentials) throw new AuthException();
    if (!$this->validator->validate($credentials)) throw new AuthException();
}

private function findUser(Credentials $credentials): User
{
    $user = $this->repository->findByEmail($credentials->email());
    if (!$user) throw new AuthException();
    return $user;
}

3. Test ajouté :

php
public function testAuthenticateWithInvalidCredentials(): void
{
    $credentials = new Credentials('invalid@example.com', 'wrong');

    $this->expectException(AuthException::class);

    $this->authenticator->authenticate($credentials);
}

4. Import supprimé :

php
// Avant
use Symfony\Component\HttpFoundation\Response; // unused

// Après
// (supprimé)

5. PHPDoc ajouté :

php
/**
 * Authentifie un utilisateur avec ses credentials
 *
 * @throws AuthException Si les credentials sont invalides
 */
public function authenticate(Credentials $credentials): Token

Résultat :

✅ 5/5 commentaires corrigés
✅ 3 fichiers modifiés
✅ Tests passent (12 tests, 42 assertions)
✅ PHPStan niveau 9 : 0 errors
✅ Commit: 🔧 fix(review): address PR #87 comments

  - Rename variable for clarity
  - Extract validation logic
  - Add missing test case
  - Remove unused import
  - Add PHPDoc

✅ Push vers origin/feature/user-auth

Sur GitHub :

Reviewer: @reviewer
✅ All comments addressed! LGTM 👍

Variantes ​

Corriger seulement certains commentaires ​

bash
/git:fix-pr-comments 87 --filter="src/Security"

Corrige uniquement les commentaires dans src/Security/.

Mode interactif ​

bash
/git:fix-pr-comments 87 --interactive

Claude propose chaque correction et attend validation avant de l'appliquer.

Dry-run ​

bash
/git:fix-pr-comments 87 --dry-run

Affiche les corrections qui seraient appliquées sans les appliquer.

Troubleshooting ​

Erreur "No comments found" ​

Symptôme : No review comments found on PR #123

Solution :

  1. Vérifier que la PR existe : gh pr view 123
  2. Vérifier qu'il y a des commentaires de review (pas juste conversation)
  3. S'assurer d'être authentifié : gh auth status

Erreur lors de l'application ​

Symptôme : Failed to apply correction in UserController.php:42

Solution :

  1. Le fichier a peut-être changé depuis le commentaire
  2. Appliquer manuellement cette correction
  3. Relancer avec --skip-failed

Conflit après correction ​

Symptôme : git push failed: conflicts detected

Solution :

bash
git pull --rebase origin main
# Résoudre conflits
/git:conflit
git push --force-with-lease

Tests en échec après correction ​

Symptôme : Tests: 2 failures after applying corrections

Solution :

  1. Analyser les erreurs de test
  2. Les corrections ont peut-être cassé quelque chose
  3. Ajuster manuellement
  4. Ou utiliser /dev:review pour identifier le problème

Liens Connexes ​

Use cases :

Plugins :

Documentation :

Tips & Best Practices ​

✅ Bonnes pratiques ​

  • Review avant merge : toujours vérifier les corrections appliquées
  • Tests : s'assurer que les tests passent après corrections
  • Commit message : inclure référence à la PR (fix(review): address PR #123 comments)
  • Force push : utiliser --force-with-lease plutôt que --force

🔍 Optimisations ​

Workflow optimal :

  1. /git:fix-pr-comments 123
  2. Review manuelle rapide des changements
  3. Tests locaux : vendor/bin/phpunit
  4. PHPStan : vendor/bin/phpstan analyse
  5. Push si tout est vert

GitHub Actions : Ajouter un workflow qui re-vérifie après corrections :

yaml
name: Re-review after fixes
on:
  push:
    branches:
      - 'feature/**'

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run tests
        run: vendor/bin/phpunit
      - name: Run PHPStan
        run: vendor/bin/phpstan analyse

🎯 Métriques de qualité ​

Une correction de review réussie c'est :

  • ✅ 100% des commentaires adressés
  • ✅ Tests passent
  • ✅ PHPStan niveau 9 vert
  • ✅ Pas de régression
  • ✅ Reviewer satisfait (LGTM)

Checklist Validation ​

Avant de lancer :

  • [ ] PR existante avec commentaires
  • [ ] GitHub CLI authentifié
  • [ ] Branch à jour
  • [ ] Pas de changements non commités

Pendant la correction :

  • [ ] Tous les commentaires récupérés
  • [ ] Corrections appliquées sans erreur
  • [ ] Tests passent
  • [ ] PHPStan vert

Après correction :

  • [ ] Commit descriptif créé
  • [ ] Push réussi
  • [ ] PR updated sur GitHub
  • [ ] Reviewer notifié
  • [ ] Ready for re-review

Publié sous licence MIT