From 66e5666687b0bc37ba76575067bab1706782949f Mon Sep 17 00:00:00 2001 From: kyuno053 <31762247+kyuno053@users.noreply.github.com> Date: Fri, 21 Aug 2026 14:02:45 +0200 Subject: [PATCH] chore(lint): ajoute noNonNullAssertion, useConsistentArrayType, useConsistentTypeDefinitions (#62) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trois règles style ajoutées à biome.json : - noNonNullAssertion (warn) : déconseille `valeur!` - useConsistentArrayType (syntax: shorthand) : impose T[] (déjà la norme partout dans le repo, aucune réécriture nécessaire) - useConsistentTypeDefinitions (style: interface) : impose `interface` pour tout type objet 0 violation sur les 200 fichiers du repo — déjà conforme. Documenté dans specs/dev-conventions.md (tableau des règles Biome actives). Corrige aussi la config du poste : node_modules pointait encore vers Biome 1.9.4 alors que package.json déclare ^2.5.9 depuis le merge de la #59 (ce checkout n'avait jamais été réinstallé depuis) — pnpm install corrige, aucun changement de lockfile. Co-authored-by: Claude Sonnet 5 --- biome.json | 11 +++++++++++ specs/dev-conventions.md | 3 +++ 2 files changed, 14 insertions(+) diff --git a/biome.json b/biome.json index eb0277d..2f80d8b 100644 --- a/biome.json +++ b/biome.json @@ -34,6 +34,17 @@ "nursery": { "noFloatingPromises": "error" }, + "style": { + "noNonNullAssertion": "warn", + "useConsistentArrayType": { + "level": "error", + "options": { "syntax": "shorthand" } + }, + "useConsistentTypeDefinitions": { + "level": "error", + "options": { "style": "interface" } + } + }, "suspicious": { "noConsole": { "level": "error", diff --git a/specs/dev-conventions.md b/specs/dev-conventions.md index 0636313..e8c9ed2 100644 --- a/specs/dev-conventions.md +++ b/specs/dev-conventions.md @@ -127,6 +127,9 @@ doubles, point-virgules toujours, virgules finales partout | `suspicious.noExplicitAny` | interdit `any` explicite (déjà dans `recommended`, listée ici pour la visibilité) — utiliser un type précis ou `unknown` + vérification | | `suspicious.noConsole` (`allow: ["error","warn","info","debug","table","assert"]`) | interdit `console.log` nu ; les niveaux nommés restent autorisés, mais uniquement depuis `LoggerService` (voir plus bas) — le reste du code ne touche jamais `console` directement | | `nursery.noFloatingPromises` | interdit une Promise ni `await`-ée, ni `.then(ok, err)`/`.catch()`, ni `void`-ée, ni `return`-ée — un `useEffect` qui lance un fetch fire-and-forget doit soit avoir un `.catch()`, soit être explicitement `void navigate(...)` | +| `style.noNonNullAssertion` (warn) | déconseille `valeur!` — préférer un vrai contrôle (`if`, `??`, un guard) à l'affirmation "je sais que c'est non-null" | +| `style.useConsistentArrayType` (`syntax: "shorthand"`) | impose `T[]`, jamais `Array` — déjà la syntaxe utilisée partout dans le repo | +| `style.useConsistentTypeDefinitions` (`style: "interface"`) | impose `interface` pour tout type objet, jamais `type X = { ... }` — `type` reste légitime pour une union/intersection/alias, seule la forme objet est concernée | `noFloatingPromises` est une règle *type-aware* (nursery, nécessite Biome ≥ 2.0) — activée directement sous `rules.nursery` sans passer par