From 6acf2accc6a6d669080e305171405b1b105bb18f Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Fri, 20 Jan 2023 03:21:44 +0100 Subject: [PATCH] Improve --explain output Previous output for `ruff --explain E711`: E711 (pycodestyle): Comparison to `None` should be `cond is None` New output: none-comparison Code: E711 (pycodestyle) Autofix is always available. Message formats: * Comparison to `None` should be `cond is None` * Comparison to `None` should be `cond is not None` --- ruff_cli/src/commands.rs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/ruff_cli/src/commands.rs b/ruff_cli/src/commands.rs index d4b1af8603..7177f0e23e 100644 --- a/ruff_cli/src/commands.rs +++ b/ruff_cli/src/commands.rs @@ -19,7 +19,7 @@ use ruff::registry::Rule; use ruff::resolver::{FileDiscovery, PyprojectDiscovery}; use ruff::settings::flags; use ruff::settings::types::SerializationFormat; -use ruff::{fix, fs, packaging, resolver, warn_user_once, IOError}; +use ruff::{fix, fs, packaging, resolver, warn_user_once, AutofixAvailability, IOError}; use serde::Serialize; use walkdir::WalkDir; @@ -293,12 +293,22 @@ struct Explanation<'a> { pub fn explain(rule: &Rule, format: SerializationFormat) -> Result<()> { match format { SerializationFormat::Text | SerializationFormat::Grouped => { - println!( - "{} ({}): {}", - rule.code(), - rule.origin().name(), - rule.message_formats()[0] - ); + println!("{}\n", rule.as_ref()); + println!("Code: {} ({})\n", rule.code(), rule.origin().name()); + + if let Some(autofix) = rule.autofixable() { + println!( + "{}", + match autofix.available { + AutofixAvailability::Sometimes => "Autofix is sometimes available.\n", + AutofixAvailability::Always => "Autofix is always available.\n", + } + ); + } + println!("Message formats:\n"); + for format in rule.message_formats() { + println!("* {format}"); + } } SerializationFormat::Json => { println!(