Ruff
À quoi il sert
Ruff analyse le code Python (lint) et le met en forme (format) en une fraction de seconde, là où les outils historiques prenaient plusieurs secondes. Il réunit en un seul binaire les rôles de flake8 (erreurs), isort (ordre des imports), black (formatage) et une partie de bandit (sécurité). Il détecte aussi bien une variable non définie (F821) qu'une exception trop large (BLE001) ou un except qui avale un secret.
Quand le choisir
- Comme première étape rapide d'un pipeline Python : il échoue en deux secondes et attrape beaucoup de défauts avant les tests.
- Pour unifier le style d'une équipe sans débat, avec
ruff format. - Pour remplacer une pile d'outils plus lents et redondants.
Alternatives
flake8 + isort + black + bandit (la combinaison historique), Pylint (analyse plus profonde mais plus lente), Pyright ou mypy pour le typage, qui est un autre sujet.
Points d'attention
- Le jeu de règles par défaut s'est beaucoup élargi avec la version 0.16.0 (juillet 2026) : épinglez la version (
ruff==0.16.9) pour qu'une mise à jour ne fasse pas rougir tout le pipeline du jour au lendemain. ruff format --checkne modifie rien et échoue si un fichier serait reformaté : c'est la forme à utiliser en CI.- Le formatage s'applique aussi aux scripts de CI eux-mêmes : ne les oubliez pas.
Par où commencer
Le cours CI/CD : les principes, où Ruff sert d'étape d'analyse statique du pipeline dès la leçon 2.