bacon - Vérificateur de code Rust en arrière-plan
bacon est un vérificateur de code en arrière-plan pour Rust. Vous l’exécutez une fois dans un terminal latéral et il surveille vos fichiers sources, réexécutant cargo check, clippy, ou vos tests à chaque sauvegarde et affichant un résumé compact toujours actualisé des erreurs et avertissements. L’objectif de conception est que vous ne tapiez jamais cargo check à nouveau et ne faites jamais défiler les murs de sortie — bacon affiche la première erreur en évidence et se met à jour en place au fur et à mesure que vous corrigez les choses.
Installation
| Méthode | Commande |
|---|
| Cargo | cargo install --locked bacon |
| macOS (Homebrew) | brew install bacon |
| Arch Linux | pacman -S bacon |
| Vérifier | bacon --version |
Exécution
| Commande | Description |
|---|
bacon | Tâche par défaut (généralement check) |
bacon clippy | Exécuter clippy sur les changements |
bacon test | Exécuter les tests sur les changements |
bacon check-all | Vérifier toutes les cibles/features |
bacon doc | Construire la documentation |
bacon --job clippy-all | Tâche nommée |
bacon -- --features x | Passer des args cargo supplémentaires |
Contrôles clavier
| Touche | Action |
|---|
c | Basculer vers check |
l | Basculer vers clippy |
t | Basculer vers test |
d | Construire les docs |
esc | Revenir à la tâche précédente |
q / Ctrl+C | Quitter |
space | Réexécuter maintenant |
s | Basculer le mode résumé (liste compacte) |
w | Basculer le retour à la ligne |
g/G | Défiler vers le haut/bas |
p | Basculer la pause au changement |
Mode résumé
Le mode résumé réduit la sortie à une ligne par problème — idéal pour un volet étroit.
✖ 3 errors · ⚠ 5 warnings
src/main.rs:42 mismatched types
src/lib.rs:17 unused variable: `x`
Appuyez sur s pour basculer ; appuyez sur enter sur une entrée pour développer le diagnostic complet.
Configuration
# bacon.toml à la racine du projet
default_job = "clippy"
[jobs.clippy]
command = ["cargo", "clippy", "--all-targets", "--color", "always"]
need_stdout = false
[jobs.test]
command = ["cargo", "nextest", "run", "--color", "always"]
need_stdout = true
[jobs.check-win]
command = ["cargo", "check", "--target", "x86_64-pc-windows-msvc"]
[keybindings]
n = "job:check-win"
| Champ | Objectif |
|---|
default_job | Ce que bacon exécute sans args |
command | La commande réelle à exécuter |
need_stdout | Capturer stdout (tests) vs stderr uniquement (check) |
watch | Chemins supplémentaires à surveiller |
keybindings | Touches personnalisées pour basculer les tâches |
Configurations courantes
# Workflow à deux volets : éditeur à gauche, bacon à droite
bacon clippy
# Exécuter les tests continuellement avec nextest pour la vitesse
bacon test # avec la tâche nextest définie ci-dessus
# Surveiller un membre du workspace uniquement
bacon -p my-crate
Pourquoi pas juste cargo watch ?
| Aspect | bacon | cargo-watch |
|---|
| Sortie | Résumé compact, mise à jour en place | Sortie brute et défilante |
| Basculement de tâche | Keybindings live | Redémarrer avec les nouveaux args |
| Focus | Première erreur en évidence | Log complet |
| Meilleur pour | Volet de rétroaction continu | Surveillance de commande générique |
Pour non-Rust ou surveillance générique de fichiers, utiliser watchexec ; pour les exécutions de test plus rapides s’associer avec cargo-nextest.
Ressources