refactor: Simplify Linter::categories

This commit is contained in:
Martin Fischer 2023-01-31 10:10:38 +01:00 committed by Charlie Marsh
parent 0b7fa64481
commit 1b0748d19d
1 changed files with 11 additions and 18 deletions

View File

@ -7,7 +7,6 @@ use strum_macros::{AsRefStr, EnumIter};
use crate::ast::types::Range; use crate::ast::types::Range;
use crate::fix::Fix; use crate::fix::Fix;
use crate::rule_selector::{prefix_to_selector, RuleSelector};
use crate::violation::Violation; use crate::violation::Violation;
use crate::{rules, violations}; use crate::{rules, violations};
@ -634,27 +633,21 @@ pub trait RuleNamespace: Sized {
} }
/// The prefix, name and selector for an upstream linter category. /// The prefix, name and selector for an upstream linter category.
pub struct LinterCategory(pub &'static str, pub &'static str, pub RuleSelector); pub struct LinterCategory(pub &'static str, pub &'static str, pub RuleCodePrefix);
// TODO(martin): Move these constant definitions back to Linter::categories impl
// once RuleSelector is an enum with a Linter variant
const PYCODESTYLE_CATEGORIES: &[LinterCategory] = &[
LinterCategory("E", "Error", prefix_to_selector(RuleCodePrefix::E)),
LinterCategory("W", "Warning", prefix_to_selector(RuleCodePrefix::W)),
];
const PYLINT_CATEGORIES: &[LinterCategory] = &[
LinterCategory("PLC", "Convention", prefix_to_selector(RuleCodePrefix::PLC)),
LinterCategory("PLE", "Error", prefix_to_selector(RuleCodePrefix::PLE)),
LinterCategory("PLR", "Refactor", prefix_to_selector(RuleCodePrefix::PLR)),
LinterCategory("PLW", "Warning", prefix_to_selector(RuleCodePrefix::PLW)),
];
impl Linter { impl Linter {
pub fn categories(&self) -> Option<&'static [LinterCategory]> { pub fn categories(&self) -> Option<&'static [LinterCategory]> {
match self { match self {
Linter::Pycodestyle => Some(PYCODESTYLE_CATEGORIES), Linter::Pycodestyle => Some(&[
Linter::Pylint => Some(PYLINT_CATEGORIES), LinterCategory("E", "Error", RuleCodePrefix::E),
LinterCategory("W", "Warning", RuleCodePrefix::W),
]),
Linter::Pylint => Some(&[
LinterCategory("PLC", "Convention", RuleCodePrefix::PLC),
LinterCategory("PLE", "Error", RuleCodePrefix::PLE),
LinterCategory("PLR", "Refactor", RuleCodePrefix::PLR),
LinterCategory("PLW", "Warning", RuleCodePrefix::PLW),
]),
_ => None, _ => None,
} }
} }