AI code review sur PR : outils, CI et garde-fous
À la fin de ce tutoriel AI code review sur PR, vous saurez situer la review IA dans le flux pull/merge request, comparer GitHub Copilot Code Review, CodeRabbit, Cursor BugBot et un pattern GitHub Actions BYO key, écrire un
.coderabbit.yaml/ workflow advisory, séparer IA (conseil) et SAST/tests (gates), et appliquer une checklist DevOps (secrets, IaC, Docker, K8s, pipelines) — sans merger sur un seul LGTM machine.Niveau : Intermédiaire · Temps estimé : 40–50 min · Versions testées : GitHub (Copilot Code Review, Actions) ; notes GitLab / Azure DevOps · Dernière vérification : 2026-09-11
Prérequis
- Hub IA pour DevOps : parcours 2026
- Voisins module F : prompt injection & sécurité, structured outputs JSON, function calling
- IDE / agents : Cursor Agent / Composer 2026, agent workflows multi-outils
- Suite : Stack IA perso pour DevOps 2026
- Compte GitHub (ou GitLab / Azure Repos) avec droit d’installer une App / d’éditer les workflows ; une PR de lab sur un repo jetable
- Aucun token LLM réel dans le dépôt — placeholders seulement
Coût : 0 € en lab / offre déjà payée (ex. Copilot) ; surveiller billing Actions et quotas. Risque : fuite code privé SaaS, fatigue de commentaires, faux sentiment de sécurité si l’IA est le seul gate.
Ce que nous allons construire
Pourquoi review IA sur PR (gains + limites)
→ Cartographie 2026 : Copilot · CodeRabbit · BugBot · Actions BYO
→ Adoption : advisory → config anti-bruit → métriques
→ Lab : .coderabbit.yaml + workflow ai-review.yml (placeholders)
→ Branch protection : IA advisory · SAST/tests required
→ Checklist DevOps humaine + erreurs fréquentes + quiz
(Schéma à remplacer par une image locale Excalidraw / draw.io, alt : « AI code review sur PR : outils, mode advisory, SAST gate, checklist DevOps ».)
Leçon 49. L’IA augmente le reviewer ; elle ne remplace ni tests, ni SAST (CodeQL/Semgrep/Sonar), ni la responsabilité de merge.
Étape 1 — Pourquoi une review IA sur PR
Une PR moderne mélange app, IaC, Docker et pipeline. La review humaine reste le goulot. Un reviewer IA sur ouverture / push apporte un premier passage 24/7 et des pistes — avec faux positifs, nits, et risque de fuite vers le vendor.
| Gain | Limite |
|---|---|
| Résumé + couverture large | Bruit / hallucinations |
| Suggestions committables | Fuite de contexte SaaS |
Règle d’or : l’humain décide ; l’IA signale. Pas de merge sur seul LGTM machine (IAM, secrets, réseau, prod).
Étape 2 — Cartographie outils 2026
| Outil | Setup | Force | Attention |
|---|---|---|---|
| GitHub Copilot Code Review | Natif (App / settings repo), licence Copilot | Intégration PR GitHub, peu de YAML | GitHub-centric ; qualité liée à l’abo |
| CodeRabbit | GitHub App (aussi GitLab / Bitbucket / Azure DevOps selon offre) | Résumés riches, commentaires inline, config .coderabbit.yaml |
Bruit élevé par défaut ; 1–2 semaines de tuning |
| Cursor BugBot / review agentic | Intégration GitHub + IDE Cursor | Focus bugs / root cause | Moins « généraliste » ; pricing usage à surveiller |
| Actions + BYO key (PR-Agent / Qodo…) | Workflow + secret LLM | Contrôle modèle / résidence | Ops secrets, coût tokens |
| SAST (CodeQL, Semgrep, Sonar…) | CI / App | Règles reproductibles | Gate obligatoire — pas un substitut de l’IA |
Retours 2026 : démarrer avec Copilot s’il est déjà payé ; CodeRabbit sur grosses PR après tuning ; BugBot pour la précision bugs Cursor ; SAST reste le gate prod.
Deux patterns : App/OAuth (peu de YAML, modèle vendor) · Actions BYO key (contrôle modèle/résidence — required check souvent trop tôt).
Étape 3 — Adoption sans brûler l’équipe
- Advisory seulement — pas de required check IA les 2 premières semaines.
- Classer chaque commentaire : utile / nit / faux. Si tout est dismiss, le signal meurt.
- Config agressive :
paths-ignore(docs, snapshots, generated, vendor), couper catégories style. - Mesurer délai 1er regard humain, % actionnés, bugs post-merge.
- Ensuite seulement : check soft éventuel ; tests + SAST restent required.
Cible : ratio utile/bruit > ~50 % après tuning.
Étape 4 — Lab : config CodeRabbit (anti-bruit)
Sur un repo jetable, installez l’App CodeRabbit (ou équivalent doc vendor). Ajoutez à la racine :
# .coderabbit.yaml — lab DevOps Elastic Hayway (adapter à votre outil)
language: fr
reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
review_comment_lgtm: false
path_filters:
- "!**/*.md"
- "!**/docs/**"
- "!**/snapshots/**"
- "!**/generated/**"
- "!**/vendor/**"
- "!**/*lock.json"
- "!**/dist/**"
chat:
auto_reply: false
Ouvrez une PR avec un défaut lab (secret factice API_KEY = "sk-lab-not-real", bind 0.0.0.0 en compose). Vérifiez résumé, signal utile, pas de LGTM vide. Coupez chaque catégorie bruyante.
Sans CodeRabbit : activez Copilot Code Review et comparez le volume sur la même PR.
Étape 5 — Lab : workflow Actions advisory (BYO)
Pattern contrôle : review en CI, commentaire bot, échec soft optionnel — ici on reste advisory.
# .github/workflows/ai-review.yml
name: ai-review-advisory
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
issues: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run AI review (placeholder tool)
env:
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
test -n "${LLM_API_KEY}" || { echo "Secret LLM_API_KEY manquant — skip lab"; exit 0; }
# Remplacer par l'action / CLI officielle de votre outil (PR-Agent, etc.)
echo "Advisory only — ne pas utiliser comme required check"
echo "Diff scope: ${{ github.event.pull_request.diff_url }}"
Secret repo LLM_API_KEY (lab). Sur la PR, le check peut rester vert avec findings (advisory). Pas de required tant que le bruit n’est pas maîtrisé.
Étape 6 — Branch protection : qui bloque le merge ?
| Check | Rôle | Required ? |
|---|---|---|
| Unit / integration tests | Correctness | Oui |
| SAST (CodeQL, Semgrep, Sonar…) | Sécurité / qualité déterministe | Oui (prod) |
| Build / lint | Hygien | Souvent oui |
| AI code review | Signal, résumé, pistes | Non au début (advisory) |
| Review humaine (CODEOWNERS) | Décision | Oui selon politique |
Branch protection : 1 review humaine + CI verts ; l’App IA commente sans bloquer.
Étape 7 — Checklist DevOps que l’humain garde
Même avec un excellent bot, vérifiez encore :
| Zone | Questions |
|---|---|
| Secrets | Pas de tokens, .env, clés dans le diff ; rotation si fuite |
| IAM / cloud | Moindre privilège, pas de * wildcards gratuites |
| Docker | User non-root, image pin digests, pas de secrets en ENV |
| K8s | Pas de privileged inutile, NetworkPolicy, secrets via Secret/CSI |
| Pipelines | Pas de curl | bash opaque, secrets via store, environments protégés |
| IaC | State distant, pas de destroy surprise, plan lisible |
| Prompt / agent | Instructions repo : pas d’exfil, allowlist outils (voir prompt injection) |
Astuce : REVIEW.md ou section CONTRIBUTING.md — utile à l’humain et comme contexte App.
Étape 8 — Sécurité, données et responsabilité
- Données : code privé chez le vendor — DPA / opt-out training ; allowlist repos.
- Paths : exclure
**/secrets/**, clés, dumps. - Injection : diff malveillant peut biaiser le bot — croiser SAST + humain (prompt injection).
- Responsabilité : merge = acte humain / policy ; l’IA n’est pas approver compliance.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
| 40 commentaires/PR, équipe ignore | Config défaut bruyante | paths-ignore, profil chill, couper LGTM, catégories style |
| « On a Copilot donc on est safe » | Confusion génération ≠ review ≠ SAST | Activer review + garder CodeQL/Semgrep required |
| Check IA required trop tôt | Faux positifs bloquent | Advisory 2 semaines ; mesurer dismiss |
| Secret LLM dans le YAML | Mauvaise hygiène | secrets.* uniquement ; never commit |
| Bot mute sur monorepo | Paths trop filtrés ou App mal scoped | Élargir path_filters ; permissions App |
| Merge sur seul LGTM IA | Process laxiste | CODEOWNERS + review humaine obligatoire |
| Fuite vers vendor non approuvé | App installée sans legal | Allowlist orgs ; repos publics lab d’abord |
Quiz (5 questions)
1. Rôle correct de l’AI code review au démarrage ?
– A. Required status check unique pour merger
– B. Couche advisory qui commente ; tests/SAST restent les gates
– C. Remplace CODEOWNERS
2. Fichier typique pour réduire le bruit CodeRabbit ?
– A. /etc/passwd
– B. .coderabbit.yaml (path filters, pas de LGTM vide)
– C. Dockerfile uniquement
3. Que garder en required en prod ?
– A. Uniquement le résumé IA
– B. Tests + SAST déterministe (+ review humaine selon policy)
– C. Rien, l’IA suffit
4. Risque majeur d’une App review SaaS sur repo privé ?
– A. Elle compile plus vite
– B. Exposition du code / métadonnées au vendor — lire contrat & scopes
– C. Elle désactive Git
5. Première réaction si l’équipe dismiss 90 % des commentaires ?
– A. Passer le check en required pour forcer la lecture
– B. Retuner config (moins de nits), mesurer le ratio utile, rester advisory
– C. Supprimer les tests unitaires
Réponses : 1‑B · 2‑B · 3‑B · 4‑B · 5‑B
Récapitulatif
L’AI code review sur PR amplifie le reviewer : Copilot / CodeRabbit / BugBot / Actions BYO, adoption advisory, labs config + workflow, gates SAST/tests, checklist DevOps et garde-fous données. Suite : stack IA perso et prompt injection.
Ressources & suite
- Docs vendor : GitHub Copilot Code Review, CodeRabbit (
.coderabbit.yaml), Cursor BugBot, GitHub Actionspull_request - SAST : CodeQL, Semgrep, Sonar — toujours en parallèle de l’IA
- Hub : IA pour DevOps : parcours 2026
- Voisins : prompt injection & sécurité · structured outputs · function calling
- IDE : Cursor Agent / Composer · agent workflows
- Suite : Stack IA perso pour DevOps 2026
Maillage série IA — Patterns & sécurité
| ← Précédent | Prompt injection & sécurité |
| → Suivant | Stack IA perso pour DevOps 2026 |
| Hub | IA pour DevOps : parcours 2026 |
| Latéral | structured outputs · Cursor Agent / Composer |
Retour parcours IA — hub Claude, Codex, ChatGPT et Skills.