e81d88166b
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
30 lines
2.5 KiB
Markdown
30 lines
2.5 KiB
Markdown
# Backend : Java, Python, Bash
|
|
|
|
Points à vérifier en priorité selon le langage. Utiliser la grille de sévérité de SKILL.md.
|
|
|
|
## Java (8 → 25)
|
|
|
|
- **Version cible** : vérifier que les features utilisées (records, pattern matching, sealed classes, virtual threads...) correspondent bien à la version de langage réellement ciblée par le module — un usage de feature récente dans un module encore en Java 8/11 est 🔴.
|
|
- Gestion d'exceptions : ne jamais avaler silencieusement (`catch (Exception e) {}`) → 🔴 si ça masque une erreur réelle, 🟠 sinon.
|
|
- Null-safety : préférer `Optional` en retour de méthode plutôt que retourner `null` sans le documenter.
|
|
- Ressources : `try-with-resources` systématique pour tout ce qui implémente `Closeable`/`AutoCloseable` (fichiers, connexions DB, sockets).
|
|
- Concurrence : attention aux collections non thread-safe partagées entre threads ; si virtual threads (Java 21+), vérifier l'absence de `synchronized` bloquant qui annule le bénéfice (pinning).
|
|
- Build : cohérence Maven/Gradle avec le reste du studio, pas de dépendance ajoutée sans justification.
|
|
|
|
## Python 3
|
|
|
|
- Typing : encourager les type hints sur les fonctions publiques/API, surtout dans du code partagé entre modules — absence de typing sur une fonction publique = 🟡.
|
|
- Gestion d'erreurs : `except Exception:` nu ou `except:` bare = 🔴 (masque tout, y compris `KeyboardInterrupt`/bugs).
|
|
- Mutable default arguments (`def f(x=[])`) = 🔴, piège classique.
|
|
- Environnements : vérifier la présence d'un fichier de dépendances explicite (requirements.txt / pyproject.toml) et l'absence d'installs globales non versionnées.
|
|
- Context managers (`with`) pour tout ce qui ouvre une ressource (fichiers, connexions DB/PostgreSQL, subprocess).
|
|
- f-strings plutôt que `%` ou `.format()` pour la lisibilité (🔵 suggestion seulement, pas bloquant).
|
|
|
|
## Bash
|
|
|
|
- `set -euo pipefail` en tête de script sauf raison explicite de ne pas l'avoir → absence = 🟠 (échecs silencieux en cascade).
|
|
- Toujours quoter les variables (`"$var"`) sauf besoin explicite de split — variable non quotée dans un chemin de fichier = 🔴 potentiel (injection/špace bugs).
|
|
- Éviter de parser `ls` ; préférer les globs ou `find -print0` / `while read -r`.
|
|
- Vérifier les codes de sortie des commandes critiques plutôt que de supposer le succès.
|
|
- Scripts destinés à tourner en CI Gitea ou en conteneur : vérifier l'idempotence (peut être relancé sans effet de bord destructeur).
|