Présentation

Jev‑Code‑Reviewer est un outil open‑source qui propose une revue de code centrée sur le comportement des modifications plutôt que sur la simple comparaison de diff. Il s’appuie sur les modèles d’OpenAI pour générer une explication en langage naturel de chaque changement et classe chaque unité de modification (diff hunk) en trois niveaux de priorité : P0, P1 et P2. Par défaut, seules les sections P0 sont affichées, ce qui réduit la charge cognitive du développeur lorsqu’un agent génère des centaines de fichiers modifiés.

Architecture et flux de données

L’ensemble fonctionne sur la machine locale : un serveur Node.js écoute sur 127.0.0.1:4731 et ne communique jamais directement avec les API GitHub. Le processus commence par jev-reviewer serve, qui expose une API locale. Lorsqu’un développeur lance jev-reviewer analyze avec l’URL d’une pull‑request et le chemin du dépôt, le client envoie les fragments de code modifiés ainsi que le contexte voisin à deux services externes : TypeSafe (pour la compréhension du code) et OpenAI (pour la génération de texte). Les réponses sont ensuite formatées et renvoyées à l’extension Chrome, qui les injecte dans la page « Files changed » de GitHub.

jev-reviewer analyze --pr https://github.com/OWNER/REPO/pull/123 \
    --repo /path/to/clone

Configuration des priorités et limites d’analyse

Le classement P0‑P2 est configurable via le fichier config/policy.json. En copiant ce fichier sous le nom .jev-reviewer.json à la racine du dépôt ou en passant l’option --policy, l’utilisateur peut ajuster les critères qui déterminent la gravité d’une modification. La couverture d’analyse est restreinte à 12 unités de changement par défaut, triées par ordre de chemin. L’option --max-units permet d’étendre ce plafond jusqu’à 100 unités, mais chaque unité supplémentaire augmente le nombre d’appels aux services externes et le temps de latence.

jev-reviewer analyze --max-units 100

Sécurité et confidentialité des clés

Les clés d’accès à TypeSafe et OpenAI sont stockées dans ~/.config/jev-reviewer/credentials.json avec des permissions owner‑only. Le fichier n’est pas chiffré, ce qui implique que toute compromission du compte utilisateur local expose les clés. Le concepteur recommande de privilégier ce stockage à l’utilisation de variables d’environnement, car les agents d’écriture de code exécutés dans le même shell ne voient généralement pas les variables exportées. Le serveur local ne transmet aucune donnée à GitHub ; les seules communications externes sont les requêtes vers TypeSafe et OpenAI, limitées aux fragments de code analysés.