LLMs pour la code review : guide pratique et limites

Les grands modeles de langage (LLMs) se sont imposes comme des assistants de developpement incontournables. Mais qu'en est-il de leur utilisation pour la code review ? Apres six mois d'experimentation en production, voici notre retour d'experience detaille.

Notre protocole d'evaluation

Nous avons integre un assistant LLM dans notre workflow de Pull Requests sur un projet de 50 000 lignes en TypeScript. L'objectif : evaluer la capacite du modele a detecter des bugs, des problemes de securite et des violations de conventions.

Ce qui fonctionne bien

Detection de patterns problematiques

Les LLMs excellent a reperer des patterns connus comme les race conditions, les fuites memoire potentielles ou les injections SQL. Sur notre base de test, le modele a detecte 73% des vulnerabilites connues.

// Exemple detecte par le LLM
// AVANT (vulnerable a l'injection SQL)
const query = `SELECT * FROM users WHERE id = ${userId}`;

// APRES (correction suggeree)
const query = 'SELECT * FROM users WHERE id = $1';
const result = await db.query(query, [userId]);

Verification de conventions

Avec un prompt bien configure, le LLM verifie efficacement le respect des conventions d'equipe : nommage, structure des fichiers, patterns architecturaux. C'est un gain de temps considerable pour les reviewers humains.

Documentation et lisibilite

Le modele est particulierement pertinent pour suggerer des ameliorations de lisibilite : noms de variables plus explicites, decomposition de fonctions trop longues, ajout de commentaires sur la logique complexe.

Ce qui ne fonctionne pas

Logique metier

Sans contexte metier approfondi, le LLM ne peut pas verifier si l'implementation correspond aux specifications fonctionnelles. Il detecte des bugs techniques, pas des bugs fonctionnels.

Faux positifs

Le taux de faux positifs reste significatif, autour de 25% dans notre experience. Des commentaires irrelevants ou incorrects peuvent creer de la fatigue chez les developpeurs et eroder la confiance dans l'outil.

Un LLM est un excellent assistant de review, mais un pietre remplacement pour un reviewer humain experimente.

Architecture et design

Les decisions architecturales necessitent une comprehension globale du systeme que les LLMs actuels ne possedent pas. Ils peuvent commenter du code fichier par fichier, mais pas evaluer la coherence architecturale d'un changement.

Notre workflow recommande

  1. Pre-review automatique : le LLM analyse la PR avant la review humaine
  2. Filtrage : un script filtre les commentaires a faible confiance
  3. Review humaine : le reviewer se concentre sur la logique metier et l'architecture
  4. Feedback loop : les faux positifs sont utilises pour affiner le prompt

Conclusion

Les LLMs pour la code review sont un complement precieux, pas un remplacement. Ils liberent du temps pour les reviewers humains en traitant les aspects mecaniques de la review. L'important est de bien calibrer les attentes et d'iterer sur le prompt pour reduire les faux positifs.