mirror of https://github.com/astral-sh/ruff
Reduce number of sites for new check definitions (#227)
This commit is contained in:
parent
0d0c8730fa
commit
14806c62ca
|
|
@ -1,56 +1,14 @@
|
||||||
/// Generate a Markdown-compatible table of supported lint rules.
|
/// Generate a Markdown-compatible table of supported lint rules.
|
||||||
use ruff::checks::{CheckKind, RejectedCmpop};
|
use ruff::checks::{CheckCode, ALL_CHECK_CODES};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut check_kinds: Vec<CheckKind> = vec![
|
let mut check_codes: Vec<CheckCode> = ALL_CHECK_CODES.to_vec();
|
||||||
CheckKind::AmbiguousClassName("...".to_string()),
|
check_codes.sort();
|
||||||
CheckKind::AmbiguousFunctionName("...".to_string()),
|
|
||||||
CheckKind::AmbiguousVariableName("...".to_string()),
|
|
||||||
CheckKind::AssertTuple,
|
|
||||||
CheckKind::BreakOutsideLoop,
|
|
||||||
CheckKind::ContinueOutsideLoop,
|
|
||||||
CheckKind::DefaultExceptNotLast,
|
|
||||||
CheckKind::DoNotAssignLambda,
|
|
||||||
CheckKind::DoNotUseBareExcept,
|
|
||||||
CheckKind::DuplicateArgumentName,
|
|
||||||
CheckKind::FStringMissingPlaceholders,
|
|
||||||
CheckKind::ForwardAnnotationSyntaxError("...".to_string()),
|
|
||||||
CheckKind::FutureFeatureNotDefined("...".to_string()),
|
|
||||||
CheckKind::IOError("...".to_string()),
|
|
||||||
CheckKind::IfTuple,
|
|
||||||
CheckKind::ImportStarNotPermitted("...".to_string()),
|
|
||||||
CheckKind::ImportStarUsage("...".to_string()),
|
|
||||||
CheckKind::InvalidPrintSyntax,
|
|
||||||
CheckKind::IsLiteral,
|
|
||||||
CheckKind::LateFutureImport,
|
|
||||||
CheckKind::LineTooLong(89, 88),
|
|
||||||
CheckKind::ModuleImportNotAtTopOfFile,
|
|
||||||
CheckKind::MultiValueRepeatedKeyLiteral,
|
|
||||||
CheckKind::MultiValueRepeatedKeyVariable("...".to_string()),
|
|
||||||
CheckKind::NoAssertEquals,
|
|
||||||
CheckKind::NoneComparison(RejectedCmpop::Eq),
|
|
||||||
CheckKind::NotInTest,
|
|
||||||
CheckKind::NotIsTest,
|
|
||||||
CheckKind::RaiseNotImplemented,
|
|
||||||
CheckKind::ReturnOutsideFunction,
|
|
||||||
CheckKind::SyntaxError("...".to_string()),
|
|
||||||
CheckKind::TooManyExpressionsInStarredAssignment,
|
|
||||||
CheckKind::TrueFalseComparison(true, RejectedCmpop::Eq),
|
|
||||||
CheckKind::TwoStarredExpressions,
|
|
||||||
CheckKind::TypeComparison,
|
|
||||||
CheckKind::UndefinedExport("...".to_string()),
|
|
||||||
CheckKind::UndefinedLocal("...".to_string()),
|
|
||||||
CheckKind::UndefinedName("...".to_string()),
|
|
||||||
CheckKind::UnusedImport("...".to_string()),
|
|
||||||
CheckKind::UnusedVariable("...".to_string()),
|
|
||||||
CheckKind::UselessObjectInheritance("...".to_string()),
|
|
||||||
CheckKind::YieldOutsideFunction,
|
|
||||||
];
|
|
||||||
check_kinds.sort_by_key(|check_kind| check_kind.code());
|
|
||||||
|
|
||||||
println!("| Code | Name | Message |");
|
println!("| Code | Name | Message |");
|
||||||
println!("| ---- | ----- | ------- |");
|
println!("| ---- | ----- | ------- |");
|
||||||
for check_kind in check_kinds {
|
for check_code in check_codes {
|
||||||
|
let check_kind = check_code.kind();
|
||||||
println!(
|
println!(
|
||||||
"| {} | {} | {} |",
|
"| {} | {} | {} |",
|
||||||
check_kind.code().as_str(),
|
check_kind.code().as_str(),
|
||||||
|
|
|
||||||
|
|
@ -5,47 +5,3 @@ extend-exclude = [
|
||||||
"migrations",
|
"migrations",
|
||||||
"./resources/test/fixtures/directory/also_excluded.py",
|
"./resources/test/fixtures/directory/also_excluded.py",
|
||||||
]
|
]
|
||||||
select = [
|
|
||||||
"E402",
|
|
||||||
"E501",
|
|
||||||
"E711",
|
|
||||||
"E712",
|
|
||||||
"E713",
|
|
||||||
"E714",
|
|
||||||
"E721",
|
|
||||||
"E722",
|
|
||||||
"E731",
|
|
||||||
"E741",
|
|
||||||
"E742",
|
|
||||||
"E743",
|
|
||||||
"E902",
|
|
||||||
"E999",
|
|
||||||
"F401",
|
|
||||||
"F403",
|
|
||||||
"F404",
|
|
||||||
"F406",
|
|
||||||
"F407",
|
|
||||||
"F541",
|
|
||||||
"F601",
|
|
||||||
"F602",
|
|
||||||
"F621",
|
|
||||||
"F622",
|
|
||||||
"F631",
|
|
||||||
"F632",
|
|
||||||
"F633",
|
|
||||||
"F634",
|
|
||||||
"F701",
|
|
||||||
"F702",
|
|
||||||
"F704",
|
|
||||||
"F706",
|
|
||||||
"F707",
|
|
||||||
"F722",
|
|
||||||
"F821",
|
|
||||||
"F822",
|
|
||||||
"F823",
|
|
||||||
"F831",
|
|
||||||
"F841",
|
|
||||||
"F901",
|
|
||||||
"R001",
|
|
||||||
"R002",
|
|
||||||
]
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,52 @@ use regex::Regex;
|
||||||
use rustpython_parser::ast::Location;
|
use rustpython_parser::ast::Location;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Hash, PartialOrd, Ord)]
|
pub const ALL_CHECK_CODES: [CheckCode; 42] = [
|
||||||
|
CheckCode::E402,
|
||||||
|
CheckCode::E501,
|
||||||
|
CheckCode::E711,
|
||||||
|
CheckCode::E712,
|
||||||
|
CheckCode::E713,
|
||||||
|
CheckCode::E714,
|
||||||
|
CheckCode::E721,
|
||||||
|
CheckCode::E722,
|
||||||
|
CheckCode::E731,
|
||||||
|
CheckCode::E741,
|
||||||
|
CheckCode::E742,
|
||||||
|
CheckCode::E743,
|
||||||
|
CheckCode::E902,
|
||||||
|
CheckCode::E999,
|
||||||
|
CheckCode::F401,
|
||||||
|
CheckCode::F403,
|
||||||
|
CheckCode::F404,
|
||||||
|
CheckCode::F406,
|
||||||
|
CheckCode::F407,
|
||||||
|
CheckCode::F541,
|
||||||
|
CheckCode::F601,
|
||||||
|
CheckCode::F602,
|
||||||
|
CheckCode::F621,
|
||||||
|
CheckCode::F622,
|
||||||
|
CheckCode::F631,
|
||||||
|
CheckCode::F632,
|
||||||
|
CheckCode::F633,
|
||||||
|
CheckCode::F634,
|
||||||
|
CheckCode::F701,
|
||||||
|
CheckCode::F702,
|
||||||
|
CheckCode::F704,
|
||||||
|
CheckCode::F706,
|
||||||
|
CheckCode::F707,
|
||||||
|
CheckCode::F722,
|
||||||
|
CheckCode::F821,
|
||||||
|
CheckCode::F822,
|
||||||
|
CheckCode::F823,
|
||||||
|
CheckCode::F831,
|
||||||
|
CheckCode::F841,
|
||||||
|
CheckCode::F901,
|
||||||
|
CheckCode::R001,
|
||||||
|
CheckCode::R002,
|
||||||
|
];
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Hash, PartialOrd, Ord)]
|
||||||
pub enum CheckCode {
|
pub enum CheckCode {
|
||||||
E402,
|
E402,
|
||||||
E501,
|
E501,
|
||||||
|
|
@ -160,6 +205,54 @@ impl CheckCode {
|
||||||
_ => &LintSource::AST,
|
_ => &LintSource::AST,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A placeholder representation of the CheckKind for the check.
|
||||||
|
pub fn kind(&self) -> CheckKind {
|
||||||
|
match self {
|
||||||
|
CheckCode::E742 => CheckKind::AmbiguousClassName("...".to_string()),
|
||||||
|
CheckCode::E743 => CheckKind::AmbiguousFunctionName("...".to_string()),
|
||||||
|
CheckCode::E741 => CheckKind::AmbiguousVariableName("...".to_string()),
|
||||||
|
CheckCode::F631 => CheckKind::AssertTuple,
|
||||||
|
CheckCode::F701 => CheckKind::BreakOutsideLoop,
|
||||||
|
CheckCode::F702 => CheckKind::ContinueOutsideLoop,
|
||||||
|
CheckCode::F707 => CheckKind::DefaultExceptNotLast,
|
||||||
|
CheckCode::E731 => CheckKind::DoNotAssignLambda,
|
||||||
|
CheckCode::E722 => CheckKind::DoNotUseBareExcept,
|
||||||
|
CheckCode::F831 => CheckKind::DuplicateArgumentName,
|
||||||
|
CheckCode::F541 => CheckKind::FStringMissingPlaceholders,
|
||||||
|
CheckCode::F722 => CheckKind::ForwardAnnotationSyntaxError("...".to_string()),
|
||||||
|
CheckCode::F407 => CheckKind::FutureFeatureNotDefined("...".to_string()),
|
||||||
|
CheckCode::E902 => CheckKind::IOError("...".to_string()),
|
||||||
|
CheckCode::F634 => CheckKind::IfTuple,
|
||||||
|
CheckCode::F406 => CheckKind::ImportStarNotPermitted("...".to_string()),
|
||||||
|
CheckCode::F403 => CheckKind::ImportStarUsage("...".to_string()),
|
||||||
|
CheckCode::F633 => CheckKind::InvalidPrintSyntax,
|
||||||
|
CheckCode::F632 => CheckKind::IsLiteral,
|
||||||
|
CheckCode::F404 => CheckKind::LateFutureImport,
|
||||||
|
CheckCode::E501 => CheckKind::LineTooLong(89, 88),
|
||||||
|
CheckCode::E402 => CheckKind::ModuleImportNotAtTopOfFile,
|
||||||
|
CheckCode::F601 => CheckKind::MultiValueRepeatedKeyLiteral,
|
||||||
|
CheckCode::F602 => CheckKind::MultiValueRepeatedKeyVariable("...".to_string()),
|
||||||
|
CheckCode::R002 => CheckKind::NoAssertEquals,
|
||||||
|
CheckCode::E711 => CheckKind::NoneComparison(RejectedCmpop::Eq),
|
||||||
|
CheckCode::E713 => CheckKind::NotInTest,
|
||||||
|
CheckCode::E714 => CheckKind::NotIsTest,
|
||||||
|
CheckCode::F901 => CheckKind::RaiseNotImplemented,
|
||||||
|
CheckCode::F706 => CheckKind::ReturnOutsideFunction,
|
||||||
|
CheckCode::E999 => CheckKind::SyntaxError("...".to_string()),
|
||||||
|
CheckCode::F621 => CheckKind::TooManyExpressionsInStarredAssignment,
|
||||||
|
CheckCode::E712 => CheckKind::TrueFalseComparison(true, RejectedCmpop::Eq),
|
||||||
|
CheckCode::F622 => CheckKind::TwoStarredExpressions,
|
||||||
|
CheckCode::E721 => CheckKind::TypeComparison,
|
||||||
|
CheckCode::F822 => CheckKind::UndefinedExport("...".to_string()),
|
||||||
|
CheckCode::F823 => CheckKind::UndefinedLocal("...".to_string()),
|
||||||
|
CheckCode::F821 => CheckKind::UndefinedName("...".to_string()),
|
||||||
|
CheckCode::F401 => CheckKind::UnusedImport("...".to_string()),
|
||||||
|
CheckCode::F841 => CheckKind::UnusedVariable("...".to_string()),
|
||||||
|
CheckCode::R001 => CheckKind::UselessObjectInheritance("...".to_string()),
|
||||||
|
CheckCode::F704 => CheckKind::YieldOutsideFunction,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::upper_case_acronyms)]
|
#[allow(clippy::upper_case_acronyms)]
|
||||||
|
|
|
||||||
|
|
@ -275,50 +275,7 @@ other-attribute = 1
|
||||||
Path::new("migrations").to_path_buf(),
|
Path::new("migrations").to_path_buf(),
|
||||||
Path::new("./resources/test/fixtures/directory/also_excluded.py").to_path_buf()
|
Path::new("./resources/test/fixtures/directory/also_excluded.py").to_path_buf()
|
||||||
]),
|
]),
|
||||||
select: Some(vec![
|
select: None,
|
||||||
CheckCode::E402,
|
|
||||||
CheckCode::E501,
|
|
||||||
CheckCode::E711,
|
|
||||||
CheckCode::E712,
|
|
||||||
CheckCode::E713,
|
|
||||||
CheckCode::E714,
|
|
||||||
CheckCode::E721,
|
|
||||||
CheckCode::E722,
|
|
||||||
CheckCode::E731,
|
|
||||||
CheckCode::E741,
|
|
||||||
CheckCode::E742,
|
|
||||||
CheckCode::E743,
|
|
||||||
CheckCode::E902,
|
|
||||||
CheckCode::E999,
|
|
||||||
CheckCode::F401,
|
|
||||||
CheckCode::F403,
|
|
||||||
CheckCode::F404,
|
|
||||||
CheckCode::F406,
|
|
||||||
CheckCode::F407,
|
|
||||||
CheckCode::F541,
|
|
||||||
CheckCode::F601,
|
|
||||||
CheckCode::F602,
|
|
||||||
CheckCode::F621,
|
|
||||||
CheckCode::F622,
|
|
||||||
CheckCode::F631,
|
|
||||||
CheckCode::F632,
|
|
||||||
CheckCode::F633,
|
|
||||||
CheckCode::F634,
|
|
||||||
CheckCode::F701,
|
|
||||||
CheckCode::F702,
|
|
||||||
CheckCode::F704,
|
|
||||||
CheckCode::F706,
|
|
||||||
CheckCode::F707,
|
|
||||||
CheckCode::F722,
|
|
||||||
CheckCode::F821,
|
|
||||||
CheckCode::F822,
|
|
||||||
CheckCode::F823,
|
|
||||||
CheckCode::F831,
|
|
||||||
CheckCode::F841,
|
|
||||||
CheckCode::F901,
|
|
||||||
CheckCode::R001,
|
|
||||||
CheckCode::R002,
|
|
||||||
]),
|
|
||||||
ignore: None,
|
ignore: None,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use std::path::PathBuf;
|
||||||
use glob::Pattern;
|
use glob::Pattern;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
|
|
||||||
use crate::checks::CheckCode;
|
use crate::checks::{CheckCode, ALL_CHECK_CODES};
|
||||||
use crate::pyproject::load_config;
|
use crate::pyproject::load_config;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
@ -76,53 +76,11 @@ impl Settings {
|
||||||
.collect()
|
.collect()
|
||||||
})
|
})
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
select: BTreeSet::from_iter(config.select.unwrap_or_else(|| {
|
select: if let Some(select) = config.select {
|
||||||
vec![
|
BTreeSet::from_iter(select)
|
||||||
CheckCode::E402,
|
} else {
|
||||||
CheckCode::E501,
|
BTreeSet::from_iter(ALL_CHECK_CODES)
|
||||||
CheckCode::E711,
|
},
|
||||||
CheckCode::E712,
|
|
||||||
CheckCode::E713,
|
|
||||||
CheckCode::E714,
|
|
||||||
CheckCode::E721,
|
|
||||||
CheckCode::E722,
|
|
||||||
CheckCode::E731,
|
|
||||||
CheckCode::E741,
|
|
||||||
CheckCode::E742,
|
|
||||||
CheckCode::E743,
|
|
||||||
CheckCode::E902,
|
|
||||||
CheckCode::E999,
|
|
||||||
CheckCode::F401,
|
|
||||||
CheckCode::F403,
|
|
||||||
CheckCode::F404,
|
|
||||||
CheckCode::F406,
|
|
||||||
CheckCode::F407,
|
|
||||||
CheckCode::F541,
|
|
||||||
CheckCode::F601,
|
|
||||||
CheckCode::F602,
|
|
||||||
CheckCode::F621,
|
|
||||||
CheckCode::F622,
|
|
||||||
CheckCode::F631,
|
|
||||||
CheckCode::F632,
|
|
||||||
CheckCode::F633,
|
|
||||||
CheckCode::F634,
|
|
||||||
CheckCode::F701,
|
|
||||||
CheckCode::F702,
|
|
||||||
CheckCode::F704,
|
|
||||||
CheckCode::F706,
|
|
||||||
CheckCode::F707,
|
|
||||||
CheckCode::F722,
|
|
||||||
CheckCode::F821,
|
|
||||||
CheckCode::F822,
|
|
||||||
CheckCode::F823,
|
|
||||||
CheckCode::F831,
|
|
||||||
CheckCode::F841,
|
|
||||||
CheckCode::F901,
|
|
||||||
// Disable refactoring codes by default.
|
|
||||||
// CheckCode::R001,
|
|
||||||
// CheckCode::R002,
|
|
||||||
]
|
|
||||||
})),
|
|
||||||
};
|
};
|
||||||
if let Some(ignore) = &config.ignore {
|
if let Some(ignore) = &config.ignore {
|
||||||
settings.ignore(ignore);
|
settings.ignore(ignore);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue