Nehos Groupe

L'essentiel

L'IA génère du code qui tourne — pas du code qui dure : l'étude GitClear 2024 mesure +500 % de churn code (réécrit en moins de 2 semaines) dans les projets avec IA vs sans.

Cinq anti-patterns dominent le code IA : prolifération sans abstraction, duplication silencieuse, gestion d'erreurs cosmétique, tests qui ne testent rien, et over-engineering précoce.

La stack qualité IA-compatible en 2026 repose sur Biome (linting 10× plus rapide), SonarQube (quality gate bloquant), TypeScript strict et Vitest avec gate à 80 % minimum.

Les ADRs (Architecture Decision Records) dans le repo permettent à l'IA de respecter les décisions passées — 12 ADRs suffisent à éviter 80 % des régressions architecturales IA.

Résultat terrain Nehos : codebase Next.js 8 000 lignes passée de 34 % à 71 % de coverage en 6 mois, bugs prod en baisse de 38 %, onboarding développeurs divisé par deux.

Qualité code IA : comment assurer les standards quand l'IA génère 60 % du code ?

Le vibe coding produit du code plausible. Pas du code maintenable. Voici la stack, les processus et les garde-fous que Nehos a mis en place pour que l'IA génère du code qui dure — données terrain incluses.

Adapté à toute taille de structure

Artisan
Startup
PME / TPE
ETI
Grand Groupe
C
Chokri Siala
··vibe-coding

#Le vrai problème du code généré par IA

Il ne s'agit pas de la qualité syntaxique. L'IA écrit du code syntaxiquement correct, souvent mieux formaté qu'un développeur junior sous pression, respectueux des conventions de nommage et cohérent dans sa structure apparente. Ce n'est pas le problème.

Le problème est plus profond : l'IA optimise pour «ça tourne», pas pour «ça dure». Elle génère du code plausible au moment T, sans mémoire du contexte architectural, sans connaissance de ce qui existe dans les autres fichiers du projet, et sans aucune considération pour la maintenabilité à six mois.

L'étude GitClear 2024 — «Coding on Copilot: 2024 Data Suggests Coding Agents Decrease Code Quality» — est la référence terrain sur ce sujet. Elle mesure le churn code (proportion de code réécrit ou supprimé en moins de 2 semaines après sa création) dans les projets utilisant des assistants IA vs les projets sans. Résultat : +500 % de churn dans les projets avec IA. Le code IA n'est pas mauvais au moment où il est écrit — il est inadapté au contexte dans lequel il s'intègre, et les équipes le réécrivent massivement dans les semaines suivantes.

Ce phénomène a un nom dans les discussions entre CTOs : la dette technique IA. Elle est différente de la dette technique classique (code écrit trop vite, pas assez réfléchi) parce qu'elle est invisible à court terme et se révèle lors des premières évolutions du code. L'IA livre du code qui passe tous les tests du jour J, mais qui crée des frictions à chaque modification ultérieure.

La question n'est donc pas «faut-il utiliser l'IA pour coder ?» — la productivité est réelle, documentée, mesurée. La question est comment structurer l'environnement pour que le code IA respecte les mêmes standards que le code humain. C'est ce que nous allons détailler.


#Les 5 anti-patterns du code IA

Six mois de revue systématique du code généré par Claude Code et GitHub Copilot sur les projets Nehos ont permis d'identifier cinq anti-patterns récurrents. Ils ne sont pas toujours présents simultanément, mais chacun apparaît régulièrement si les garde-fous ne sont pas en place.

#1 — Code prolifique sans abstraction

L'IA génère du code long. Une fonction qui devrait faire 20 lignes en en fait 300. Une logique qui mérite une abstraction réutilisable est répétée trois fois de manière légèrement différente. Ce n'est pas par malice — c'est parce que l'IA répond à la requête immédiate sans vision de l'architecture globale. Elle ne sait pas que vous avez déjà une fonction formatCurrency dans utils/formatting.ts — sauf si vous le lui dites explicitement dans le contexte.

L'anti-pattern se détecte facilement avec un linter configuré (complexité cyclomatique, longueur de fonction) mais se prévient mieux encore par des prompts structurés qui décrivent explicitement les utilitaires existants.

#2 — Duplication silencieuse

L'IA ne lit pas votre codebase entière avant de générer du code. Elle travaille sur la fenêtre de contexte que vous lui donnez. Résultat : elle réimplémente des fonctions qui existent déjà, crée des types qui dupliquent des types existants, et produit des composants quasi-identiques à des composants déjà présents dans un autre dossier.

La duplication silencieuse est particulièrement problématique parce qu'elle n'est pas détectée par les tests unitaires — le code fonctionne. Elle se révèle lors des évolutions : vous corrigez un bug dans une version du code et laissez le même bug dans la version dupliquée. Les outils d'analyse statique comme SonarQube détectent ce type de duplication et sont indispensables dans ce contexte.

#3 — Gestion d'erreurs cosmétique

Le pattern le plus courant et le plus dangereux : catch (error) { console.log(error) }. L'IA gère les erreurs pour que le code compile et que les linters ne se plaignent pas — pas pour que les erreurs soient réellement traitées en production. Les blocs catch vides ou réduits à un log sans action de récupération sont légion dans le code généré.

Sur une application B2B en production, ce type de gestion d'erreurs cosmétique conduit à des états incohérents difficiles à diagnostiquer. La règle Nehos : tout bloc catch doit soit relancer l'erreur, soit déclencher une action de récupération documentée, soit journaliser avec un système structuré (pas console.log). Cette règle est encodée dans les règles ESLint du projet.

#4 — Tests «qui passent» mais ne testent rien

L'IA génère des tests facilement — trop facilement. Elle génère des tests qui passent en mockant tout ce qui pourrait échouer, en testant uniquement le happy path et en produisant des assertions triviales (expect(result).toBeDefined()). Le coverage monte, les CI passent, mais les tests ne protègent pas contre les régressions réelles.

Le signe révélateur : un test généré par IA dont la suppression ne fait pas échouer la suite de tests. Si le test peut être supprimé sans conséquence, il ne teste rien d'utile. Le mutation testing (Stryker pour TypeScript) est le seul moyen fiable de vérifier que les tests générés ont réellement une valeur de protection.

#5 — Over-engineering précoce

L'IA a une culture des design patterns. Elle applique Factory, Strategy, Observer dès que le problème s'y prête théoriquement — même si le cas d'usage réel n'en a pas besoin. Un composant React qui affiche une liste devient un système configurable avec providers et contextes. Une fonction de transformation simple devient un pipeline extensible.

L'over-engineering précoce n'est pas un problème de fonctionnement — le code fonctionne parfaitement. C'est un problème de maintenabilité : le développeur suivant doit comprendre une architecture complexe pour modifier un comportement simple. La règle YAGNI (You Aren't Gonna Need It) s'applique avec encore plus de rigueur au code IA qu'au code humain.


#Stack de qualité code IA-compatible en 2026

Les outils de qualité code ne sont pas nouveaux. Ce qui change en 2026, c'est leur positionnement : ils ne sont plus là pour aider les développeurs humains à écrire mieux — ils sont là pour contraindre l'IA à respecter les standards. Cette distinction change leur mode de configuration et leur intégration dans le pipeline.

#Linting : Biome remplace ESLint + Prettier

Biome est devenu en 2025 le remplacement crédible d'ESLint + Prettier pour les projets TypeScript. Ses benchmarks officiels affichent des performances 10 à 20 fois supérieures à ESLint sur les grandes codebases — ce qui est significatif dans un contexte où le linting est exécuté à chaque génération IA (donc plusieurs dizaines de fois par jour en workflow intensif).

Pour les projets existants avec des règles ESLint personnalisées complexes, la migration vers Biome demande un investissement initial. Nehos recommande Biome pour les nouveaux projets et le maintien d'ESLint pour les projets legacy avec des règles customs spécifiques — sauf si la base de code est assez jeune pour absorber la migration sans risque.

Configuration minimale TypeScript strict mode dans tsconfig.json :

{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true
  }
}

#Analyse statique : SonarQube

SonarQube reste la référence pour l'analyse statique en contexte IA. Sa capacité à détecter la duplication de code, à mesurer la complexité cognitive (différente de la complexité cyclomatique — plus proche de la lisibilité humaine réelle) et à identifier les security hotspots en fait l'outil le plus complet pour les projets où l'IA génère une proportion significative du code.

La version Cloud (SonarCloud) permet une intégration GitHub/GitLab en quelques minutes. La version self-hosted (Community Edition, gratuite) convient aux projets qui ne peuvent pas envoyer le code source vers des serveurs externes.

Quality gate recommandé Nehos :

  • Nouveaux bugs bloquants : 0
  • Nouvelles vulnérabilités : 0
  • Code coverage nouveau code : ≥ 80 %
  • Duplication nouveau code : < 3 %
  • Complexité cognitive par fonction : < 15

#Type safety : TypeScript 5.4 strict + Zod

TypeScript en mode strict est la première ligne de défense contre les erreurs de type produites par l'IA. L'IA génère souvent du code avec des any implicites ou des assertions de type non vérifiées — le strict mode les transforme en erreurs de compilation.

Zod complète TypeScript pour la validation runtime : les types TypeScript disparaissent à la compilation, mais Zod garantit que les données externes (API, formulaires, fichiers de configuration) respectent le schéma attendu à l'exécution. Sur les projets Next.js 16, Zod est utilisé systématiquement pour valider les données des Server Actions et des appels API.

#Security : Semgrep + Dependabot

Semgrep (SAST — Static Application Security Testing) détecte les patterns de sécurité dangereux dans le code généré : injections SQL potentielles, variables d'environnement exposées, appels fetch sans validation de l'URL, etc. Son catalogue de règles est open source et couvre les patterns IA-spécifiques documentés depuis 2024.

Dependabot reste la référence pour les vulnérabilités de dépendances. En contexte IA, il est particulièrement important : l'IA tend à introduire des dépendances supplémentaires pour résoudre des problèmes locaux sans considérer l'impact sécuritaire.

#Coverage : Vitest + Istanbul, gate à 80 %

Vitest est le runner de tests recommandé pour les projets TypeScript/Next.js en 2026 — compatible Jest API, performance bien supérieure, intégration native avec Vite. Istanbul assure le reporting de coverage. Le gate à 80 % minimum sur le nouveau code est non négociable dans le workflow Nehos : aucune PR ne peut merger si le coverage du nouveau code est inférieur à ce seuil.


#CI/CD comme garde-fou contre l'IA

La philosophie est claire : les gates CI/CD ne sont pas là pour les humains — ils sont là pour contraindre l'IA. Cette formulation change la manière dont on configure le pipeline.

Un développeur humain peut, en cas d'urgence réelle, argumenter pourquoi un quality gate particulier est contourné exceptionnellement. L'IA ne peut pas argumenter — et ne devrait pas pouvoir merger si le CI échoue. Le pipeline est la garantie que le code généré respecte les standards, indépendamment de la vitesse à laquelle il a été produit.

#Pipeline minimum bloquant

# Ordre d'exécution — chaque étape bloque la suivante en cas d'échec
steps:
  1. lint        # Biome — erreurs de style et patterns interdits
  2. typecheck   # tsc --noEmit — zéro erreur TypeScript
  3. test:unit   # Vitest — tous les tests unitaires
  4. test:integration  # Tests d'intégration (API, base de données en mémoire)
  5. coverage:gate     # Istanbul — coverage ≥ 80% sur nouveau code
  6. sonarqube         # Quality gate SonarQube bloquant
  7. semgrep           # SAST — zéro critical ou high
  8. dast (staging)    # Tests de sécurité dynamiques sur env staging

#Règles de blocage absolues

Une PR est automatiquement bloquée si l'une de ces conditions est vraie :

  • Erreur TypeScript (même 1)
  • Coverage nouveau code < 80 %
  • SonarQube blocker ou critical
  • Semgrep critical ou high
  • Test en échec (même 1)

Aucune exception, aucun bypass, même en urgence. Cette règle est la plus difficile à maintenir socialement — la pression de «juste cette fois, on corrigera après» est constante. C'est précisément pourquoi elle doit être encodée dans le pipeline et non dans les accords d'équipe.

#CLAUDE.md comme interface CI/CD → IA

Le fichier CLAUDE.md à la racine du projet est le mécanisme par lequel les contraintes CI/CD sont communiquées à l'IA avant qu'elle génère du code. Il doit contenir explicitement les règles qui déclenchent un blocage CI/CD — de cette façon, l'IA génère du code conforme dès la première proposition, réduisant le nombre de cycles de correction.

Exemple de section dans CLAUDE.md :

## Règles qualité non négociables
- TypeScript strict : zéro `any`, zéro assertion `as Type` sans guard
- Chaque fonction publique doit avoir au moins un test d'intégration
- Les blocs catch doivent relancer ou logger via `logger.error()` — jamais `console.log`
- Aucune dépendance externe sans ajout explicite au package.json documenté
- Complexité cyclomatique maximum : 10 par fonction

#Code review pour le code IA : adapter le processus

La code review change de nature quand l'IA génère une part significative du code. Le reviewer ne cherche plus principalement les erreurs de syntaxe ou de style — les outils automatiques s'en chargent. Il cherche quelque chose de plus subtil et de plus difficile à détecter : la logique est-elle correctement adaptée au contexte métier ?

#Ce qui change dans le regard du reviewer

Avant l'IA, la review portait sur deux dimensions quasi-équilibrées : «le code est-il correct ?» et «le code est-il bien écrit ?». Avec l'IA, la syntaxe et le style sont généralement bons — le linter et le typecheck s'en occupent avant même que la PR arrive en review. La question devient presque exclusivement : «le code fait-il ce qu'il est censé faire dans notre contexte spécifique ?»

Cette bascule est plus exigeante cognitivement, pas moins. Le reviewer doit comprendre le comportement attendu et vérifier que le code généré le reflète correctement — sans se laisser bercer par l'apparente propreté du code IA.

#Checklist spécifique code IA (5 questions)

1 — La logique métier est-elle correcte ? L'IA ne connaît pas les règles métier implicites de votre domaine. Vérifier que les conditions, les calculs et les règles de gestion correspondent au comportement attendu — pas seulement au comportement qui semble logique en lecture du code.

2 — Y a-t-il des edge cases non couverts ? L'IA gère bien le happy path. Les cas limites (valeurs nulles, listes vides, concurrence, timeouts) sont souvent sous-traités. Le reviewer cherche spécifiquement les branches d'erreur et les conditions aux limites.

3 — Les tests testent-ils vraiment le comportement ? Vérifier qu'au moins un test échouerait si la logique principale était inversée. Un test qui passe quelle que soit l'implémentation ne protège contre rien.

4 — Y a-t-il de la duplication cachée avec du code existant ? SonarQube détecte la duplication textuelle — mais pas la duplication fonctionnelle. Une fonction qui fait la même chose qu'une autre avec une interface différente n'est pas détectée par les outils. Le reviewer doit chercher si la fonctionnalité n'existe pas déjà ailleurs dans la codebase.

5 — Le code sera-t-il compréhensible dans 6 mois ? La lisibilité du code IA peut être trompeuse : il est syntaxiquement clair mais parfois conceptuellement opaque. Demander : si un nouveau développeur lit ce code dans 6 mois sans contexte, comprendra-t-il l'intention ?


→ Vous évaluez vos options ? Utilisez notre estimateur de budget en ligne pour obtenir une fourchette en 2 minutes, ou consultez nos tarifs détaillés.

#Architecture Decision Records (ADR) × IA

L'IA ne sait pas pourquoi vous avez fait vos choix architecturaux passés. Elle sait que vous utilisez tRPC — mais pas pourquoi vous avez choisi tRPC plutôt que REST. Elle sait que vous n'utilisez pas de class-based React — mais pas que c'est une décision délibérée, pas un oubli.

Les Architecture Decision Records (ADRs) résolvent ce problème. Un ADR est un document court qui capture une décision architecturale : son contexte, la décision prise, les alternatives considérées et les conséquences. Quand ces ADRs sont dans le repo (/docs/decisions/) et référencés dans le CLAUDE.md, l'IA les lit comme contexte avant de générer du code et aligne ses suggestions sur les décisions passées.

#Format ADR minimal

# ADR-007 : Choix de Zod pour la validation des données

## Contexte
Les données provenant des Server Actions et des API externes doivent être validées
at runtime. TypeScript ne fournit pas de validation runtime.

## Décision
Utiliser Zod comme seule librairie de validation runtime dans le projet.
Aucune librairie alternative (Yup, Joi, Valibot) ne doit être introduite.

## Conséquences
- Les schémas Zod servent aussi de source de vérité pour les types TypeScript
- Coût : légère verbosité dans la définition des schémas
- Les devs doivent maîtriser l'API Zod (documentation : zod.dev)

## Statut : Accepté — 2026-03-15

#Combien d'ADRs sont nécessaires ?

L'expérience Nehos sur plusieurs projets avec Claude Code en équipe converge sur un chiffre : 12 ADRs couvrent 80 % des régressions architecturales IA. Ces 12 ADRs portent sur les choix de stack (librairies de validation, state management, routing, authentification), les patterns interdits (class-based components, mutations directes d'état, imports circulaires) et les conventions de nommage et d'organisation des fichiers.

L'écriture de ces 12 ADRs prend une journée. Le gain sur 6 mois de développement IA-assisté est substantiel.


#Tech Radar et standards d'équipe

Un Tech Radar interne — même minimal — donne à l'IA les orientations technologiques de l'équipe. Le format Thoughtworks (quatre quadrants : Adopt / Trial / Assess / Hold) est suffisant pour 20 à 30 technologies.

#Exemple Tech Radar Nehos (extrait)

TechnologieStatutRaison
BiomeAdoptRemplace ESLint+Prettier, 10× plus rapide
tRPC + React QueryAdoptType-safety end-to-end sans codegen
Server Components ReactAdoptParadigme principal Server Components React
Bun runtimeTrialPerformance supérieure à Node pour les scripts de build
Class-based ReactHoldDécision ADR-002 — hooks uniquement
Redux ToolkitHoldRemplacé par Zustand + React Query
Moment.jsHoldRemplacé par date-fns ou Temporal API

Quand le Tech Radar est référencé dans le CLAUDE.md, les suggestions IA s'alignent automatiquement sur la vision long terme de l'équipe. L'IA ne propose plus de class-based components, ne suggère plus Moment.js, et favorise les patterns adoptés. La mise à jour trimestrielle du Tech Radar suffit à maintenir cette cohérence.

Ce mécanisme s'inscrit dans la même logique que Cursor vs Claude Code vs Copilot : l'outil importe moins que le contexte qu'on lui donne. Un Tech Radar bien documenté améliore la qualité des suggestions de tous les outils IA.


#Cas Nehos : de 34 % à 71 % de coverage en 6 mois

Le cas est concret et mesurable. En janvier 2026, la codebase principale Next.js de Nehos — 8 000 lignes de code TypeScript — affichait 34 % de coverage. Les bugs en production étaient réguliers, les reviews longues et les nouvelles fonctionnalités nécessitaient systématiquement des corrections post-déploiement.

#Problème initial

Le diagnostic SonarQube révélait trois problèmes principaux :

  • 34 % de coverage global, avec des modules critiques à 0 % (authentification, facturation)
  • 127 code smells dont 23 bloquants
  • 41 % de duplication dans les composants UI

L'équipe utilisait Claude Code pour générer du code rapidement mais sans framework qualité — chaque développeur avait ses propres standards, et le code IA s'intégrait sans garde-fous.

#Approche en trois temps

Temps 1 — Tests existants (semaines 1-4) Claude Code en mode «test generation» sur l'ensemble du code non couvert. Processus : fournir à l'IA le code source d'un module + les règles métier documentées + le schéma de données → générer les tests → review humaine focalisée sur la logique testée → merge si mutation testing valide. Résultat : couverture passée de 34 % à 52 % en 4 semaines.

Temps 2 — Quality gate bloquant (semaine 5) Activation du quality gate SonarQube bloquant sur la branche principale. Deux jours d'inconfort maximum — les PRs bloquées ont forcé la correction de 18 code smells critiques en une semaine. Après cette période d'adaptation, les PRs passaient plus vite parce que le code généré par l'IA était déjà conforme aux règles.

Temps 3 — ADRs et CLAUDE.md (semaines 6-12) Rédaction de 8 ADRs couvrant les patterns critiques de la codebase, référencés dans un CLAUDE.md enrichi. À partir de la semaine 8, la proportion de code IA nécessitant une correction de review a diminué de 40 % — l'IA proposait des solutions alignées avec les décisions architecturales documentées.

#Résultats à 6 mois (juillet 2026)

  • Coverage : 71 % (vs 34 % initial)
  • Bugs production : -38 % vs la même période N-1
  • Temps moyen de review : -30 % (code plus prévisible)
  • Durée d'onboarding nouveaux développeurs : -50 % (ADRs = documentation vivante)
  • Code smells SonarQube bloquants : 0 (vs 23 en janvier)

Ces résultats ne sont pas le fruit d'une réduction de l'utilisation de l'IA — au contraire, la proportion de code généré par IA a augmenté sur la période. Ils sont le fruit d'une structuration rigoureuse de l'environnement dans lequel l'IA opère. En parallèle, la même approche a été appliquée à des projets plus lourds, comme une migration COBOL vers Java moderne où les gains de qualité ont suivi une courbe similaire.


#Le manifeste qualité IA-first : 7 principes

Après six mois de déploiement de ce framework sur les projets Nehos, sept principes se sont cristallisés. Ils ne sont pas des règles abstraites — ils sont le produit de chaque décision prise face à un pipeline bloquant ou une revue difficile.

1 — L'IA génère, les tests valident — toujours. Aucun code généré par IA ne rejoint la branche principale sans tests automatiques qui valident le comportement attendu. Pas de dérogation pour les «petits fichiers» ou les «modifications mineures».

2 — La CI/CD est non-négociable — pas de bypass même en urgence. Les urgences de production se gèrent par revert ou par hotfix passant par le pipeline accéléré — jamais par bypass du pipeline standard. Chaque bypass crée un précédent qui érode progressivement la culture qualité.

3 — Un code incompris = un code à réécrire. Si le reviewer ne comprend pas pourquoi le code IA fait ce qu'il fait, ce n'est pas un problème de compétence du reviewer — c'est un signal que le code doit être simplifié ou documenté avant de merger. Le doute du reviewer est une information.

4 — Les ADRs précèdent le code, pas l'inverse. Une nouvelle décision architecturale doit être formalisée en ADR avant que le code correspondant soit généré. L'ADR alimente le CLAUDE.md, qui alimente les suggestions IA, qui génère du code cohérent avec la décision. L'inverse — écrire le code, puis documenter la décision après — garantit la dérive architecturale.

5 — La duplication visible vaut mieux que l'abstraction prématurée. Face au choix entre dupliquer du code et créer une abstraction prématurée pour «éviter la duplication», la duplication explicite est préférable. L'abstraction correcte émerge quand le pattern est vu trois fois avec des variations comprises — pas à la première occurrence. L'IA tend vers l'abstraction prématurée ; le reviewer doit activer YAGNI.

6 — Le type système est votre documentation. Dans un projet TypeScript strict, les types documentent les interfaces, les invariants et les contraintes mieux que les commentaires. Un type bien nommé avec des propriétés explicites remplace mille mots de documentation. L'IA génère souvent des types trop permissifs — les restreindre est une tâche de review à haute valeur ajoutée.

7 — La dette technique IA se rembourse 2× plus vite qu'elle ne s'accumule. Contrairement à la dette technique classique qui s'accumule lentement sur des années, la dette technique IA se crée vite et se détecte vite (les premiers signaux apparaissent en semaines). La bonne nouvelle : avec un framework qualité en place, le remboursement est tout aussi rapide. Une semaine de travail structuré sur les tests et les ADRs suffit à remettre à niveau un mois de dette technique IA.

Pour aller plus loin sur les implications de ces principes dans un contexte de modernisation plus large, les articles sur le refactoring IA-assisté et économies mesurées, sur comment évaluer et rembourser la dette technique et sur mesurer la productivité développeur avec l'IA donnent le cadre complet. Si la question est architecturale, migrer d'un monolithe vers les microservices et le strangler fig pattern pour moderniser le legacy fournissent les patterns adaptés. Et pour les projets qui partent de zéro avec nos services de refonte site B2B, ces principes qualité sont intégrés dès le démarrage.

Questions & Réponses

Questions fréquentes sur la qualité du code généré par IA

Oui, sur deux dimensions précises : la détection de duplication (l'IA réimplémente souvent des fonctions existantes sans le savoir) et la mesure de complexité cognitive (l'IA produit parfois du code dense qui passe la complexité cyclomatique mais reste difficile à lire). SonarQube ne détecte pas les erreurs de logique métier ni les tests qui ne testent rien — ces aspects restent à la charge de la review humaine. Sa valeur est dans la validation objective des métriques structurelles : complexité, duplication, couverture, maintenabilité. Un quality gate SonarQube bloquant est le minimum pour tout projet avec une proportion de code IA supérieure à 30 %.
Le principe : les gates bloquants portent sur les métriques objectives (coverage, erreurs TypeScript, vulnérabilités critiques), pas sur les métriques subjectives (style, complexité relative). La configuration recommandée par Nehos : zéro erreur TypeScript bloquant, coverage nouveau code ≥ 80 %, zéro SonarQube blocker ou critical, zéro Semgrep high ou critical. Les warnings (complexity, duplication <3%) sont remontés en notification sans bloquer le merge. Ce calibrage permet de bloquer les problèmes réels sans générer de friction excessive sur les petites PRs. La clé est de configurer les gates séparément pour le nouveau code (strict) et le code existant (moins strict) — SonarQube le permet nativement.
L'impact initial est réel mais court : 1 à 2 semaines d'adaptation pendant lesquelles le nombre d'erreurs TypeScript dans les suggestions IA est plus élevé. Passé cette phase, l'IA s'adapte aux contraintes strict mode et génère du code conforme dès la première proposition. L'effet net sur la vitesse est positif à partir de la troisième semaine : les erreurs de type détectées au moment de la génération ne se retrouvent pas en production, ce qui réduit le temps de debug. L'expérience Nehos montre que le strict mode réduit le temps de review de 15 à 25 % parce que le reviewer peut se concentrer sur la logique plutôt que sur les types manquants ou les assertions incorrectes.
Non — une déviation de l'IA par rapport à un ADR est d'abord un signal de correction du code, pas de l'ADR. L'ADR doit être mis à jour seulement si la décision passée est remise en cause délibérément par l'équipe, après discussion. La déviation IA est typiquement corrigée par ajout d'une précision dans le CLAUDE.md (règle plus explicite) ou par reformulation de la section concernée de l'ADR si elle était ambiguë. La mise à jour trimestrielle planifiée du Tech Radar est le bon rythme pour réviser les ADRs non urgents. Les ADRs sont des documents vivants, pas un contrat figé — mais leur stabilité est une valeur : un ADR révisé toutes les semaines n'a aucune valeur comme contexte IA.
L'argument technique ne suffit pas — il faut des données concrètes de l'équipe elle-même. La méthode Nehos : mesurer le temps passé à déboguer des régressions sur un sprint, puis calculer le coût de ce temps en jours.développeur. Comparer avec le coût d'écriture des tests manquants (généralement 3 à 5× moins cher). Le deuxième argument est le onboarding : un nouveau développeur dans une codebase à 34 % de coverage passe 2 à 3× plus de temps à comprendre le comportement attendu que dans une codebase à 80 %. En contexte IA spécifiquement, le chiffre GitClear 2024 (+500 % de churn code) est l'argument décisif : sans coverage élevé, l'IA génère du code qui sera réécrit dans les 2 semaines suivantes — annulant le gain de productivité initial.
Biome est stable en production en 2026 pour les projets TypeScript/JavaScript standards. La version 1.x est utilisée en production par plusieurs entreprises de taille significative depuis mi-2025. Les limitations résiduelles concernent deux cas spécifiques : (1) les projets avec des règles ESLint très personnalisées (plugins custom, règles métier encodées en ESLint) pour lesquels la migration vers Biome demande un travail de portage des règles non disponibles nativement ; (2) les monorepos avec des configurations très hétérogènes entre packages. Pour les nouveaux projets Next.js/TypeScript sans règles custom complexes — ce qui couvre la majorité des cas — Biome est recommandé sans réserve. La performance (10× plus rapide que ESLint sur des codebases >50 000 lignes) est un avantage concret dans les workflows IA intensifs.
Réserver un audit