Aller au contenu

bacon - Vérificateur de code Rust en arrière-plan

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éthodeCommande
Cargocargo install --locked bacon
macOS (Homebrew)brew install bacon
Arch Linuxpacman -S bacon
Vérifierbacon --version

Exécution

CommandeDescription
baconTâche par défaut (généralement check)
bacon clippyExécuter clippy sur les changements
bacon testExécuter les tests sur les changements
bacon check-allVérifier toutes les cibles/features
bacon docConstruire la documentation
bacon --job clippy-allTâche nommée
bacon -- --features xPasser des args cargo supplémentaires

Contrôles clavier

ToucheAction
cBasculer vers check
lBasculer vers clippy
tBasculer vers test
dConstruire les docs
escRevenir à la tâche précédente
q / Ctrl+CQuitter
spaceRéexécuter maintenant
sBasculer le mode résumé (liste compacte)
wBasculer le retour à la ligne
g/GDéfiler vers le haut/bas
pBasculer 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"
ChampObjectif
default_jobCe que bacon exécute sans args
commandLa commande réelle à exécuter
need_stdoutCapturer stdout (tests) vs stderr uniquement (check)
watchChemins supplémentaires à surveiller
keybindingsTouches 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 ?

Aspectbaconcargo-watch
SortieRésumé compact, mise à jour en placeSortie brute et défilante
Basculement de tâcheKeybindings liveRedémarrer avec les nouveaux args
FocusPremière erreur en évidenceLog complet
Meilleur pourVolet de rétroaction continuSurveillance 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