DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

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

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

  1. Advisory seulement — pas de required check IA les 2 premières semaines.
  2. Classer chaque commentaire : utile / nit / faux. Si tout est dismiss, le signal meurt.
  3. Config agressive : paths-ignore (docs, snapshots, generated, vendor), couper catégories style.
  4. Mesurer délai 1er regard humain, % actionnés, bugs post-merge.
  5. 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

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.