mirror of https://github.com/astral-sh/ruff
Add an end location to Check (#299)
This commit is contained in:
parent
46e6a1b3be
commit
83f18193c2
|
|
@ -8,13 +8,15 @@ use rustpython_parser::ast::{
|
|||
};
|
||||
|
||||
use crate::ast::operations::SourceCodeLocator;
|
||||
use crate::ast::types::{Binding, BindingKind, CheckLocator, FunctionScope, Scope, ScopeKind};
|
||||
use crate::ast::types::{
|
||||
Binding, BindingKind, CheckLocator, FunctionScope, Range, Scope, ScopeKind,
|
||||
};
|
||||
use crate::autofix::{fixer, fixes};
|
||||
use crate::checks::{Check, CheckKind, Fix, RejectedCmpop};
|
||||
use crate::python::builtins::BUILTINS;
|
||||
|
||||
/// Check IfTuple compliance.
|
||||
pub fn check_if_tuple(test: &Expr, location: Location) -> Option<Check> {
|
||||
pub fn check_if_tuple(test: &Expr, location: Range) -> Option<Check> {
|
||||
if let ExprKind::Tuple { elts, .. } = &test.node {
|
||||
if !elts.is_empty() {
|
||||
return Some(Check::new(CheckKind::IfTuple, location));
|
||||
|
|
@ -24,7 +26,7 @@ pub fn check_if_tuple(test: &Expr, location: Location) -> Option<Check> {
|
|||
}
|
||||
|
||||
/// Check AssertTuple compliance.
|
||||
pub fn check_assert_tuple(test: &Expr, location: Location) -> Option<Check> {
|
||||
pub fn check_assert_tuple(test: &Expr, location: Range) -> Option<Check> {
|
||||
if let ExprKind::Tuple { elts, .. } = &test.node {
|
||||
if !elts.is_empty() {
|
||||
return Some(Check::new(CheckKind::AssertTuple, location));
|
||||
|
|
@ -51,7 +53,7 @@ pub fn check_not_tests(
|
|||
if check_not_in {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NotInTest,
|
||||
locator.locate_check(operand.location),
|
||||
locator.locate_check(Range::from_located(operand)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -59,7 +61,7 @@ pub fn check_not_tests(
|
|||
if check_not_is {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NotIsTest,
|
||||
locator.locate_check(operand.location),
|
||||
locator.locate_check(Range::from_located(operand)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -106,7 +108,7 @@ pub fn check_unused_variables(
|
|||
}
|
||||
|
||||
/// Check DoNotAssignLambda compliance.
|
||||
pub fn check_do_not_assign_lambda(value: &Expr, location: Location) -> Option<Check> {
|
||||
pub fn check_do_not_assign_lambda(value: &Expr, location: Range) -> Option<Check> {
|
||||
if let ExprKind::Lambda { .. } = &value.node {
|
||||
Some(Check::new(CheckKind::DoNotAssignLambda, location))
|
||||
} else {
|
||||
|
|
@ -119,7 +121,7 @@ fn is_ambiguous_name(name: &str) -> bool {
|
|||
}
|
||||
|
||||
/// Check AmbiguousVariableName compliance.
|
||||
pub fn check_ambiguous_variable_name(name: &str, location: Location) -> Option<Check> {
|
||||
pub fn check_ambiguous_variable_name(name: &str, location: Range) -> Option<Check> {
|
||||
if is_ambiguous_name(name) {
|
||||
Some(Check::new(
|
||||
CheckKind::AmbiguousVariableName(name.to_string()),
|
||||
|
|
@ -131,7 +133,7 @@ pub fn check_ambiguous_variable_name(name: &str, location: Location) -> Option<C
|
|||
}
|
||||
|
||||
/// Check AmbiguousClassName compliance.
|
||||
pub fn check_ambiguous_class_name(name: &str, location: Location) -> Option<Check> {
|
||||
pub fn check_ambiguous_class_name(name: &str, location: Range) -> Option<Check> {
|
||||
if is_ambiguous_name(name) {
|
||||
Some(Check::new(
|
||||
CheckKind::AmbiguousClassName(name.to_string()),
|
||||
|
|
@ -143,7 +145,7 @@ pub fn check_ambiguous_class_name(name: &str, location: Location) -> Option<Chec
|
|||
}
|
||||
|
||||
/// Check AmbiguousFunctionName compliance.
|
||||
pub fn check_ambiguous_function_name(name: &str, location: Location) -> Option<Check> {
|
||||
pub fn check_ambiguous_function_name(name: &str, location: Range) -> Option<Check> {
|
||||
if is_ambiguous_name(name) {
|
||||
Some(Check::new(
|
||||
CheckKind::AmbiguousFunctionName(name.to_string()),
|
||||
|
|
@ -175,7 +177,7 @@ pub fn check_useless_object_inheritance(
|
|||
}) => {
|
||||
let mut check = Check::new(
|
||||
CheckKind::UselessObjectInheritance(name.to_string()),
|
||||
expr.location,
|
||||
Range::from_located(expr),
|
||||
);
|
||||
if matches!(autofix, fixer::Mode::Generate | fixer::Mode::Apply) {
|
||||
if let Some(fix) = fixes::remove_class_def_base(
|
||||
|
|
@ -206,7 +208,7 @@ pub fn check_default_except_not_last(handlers: &Vec<Excepthandler>) -> Option<Ch
|
|||
if type_.is_none() && idx < handlers.len() - 1 {
|
||||
return Some(Check::new(
|
||||
CheckKind::DefaultExceptNotLast,
|
||||
handler.location,
|
||||
Range::from_located(handler),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -220,13 +222,19 @@ pub fn check_raise_not_implemented(expr: &Expr) -> Option<Check> {
|
|||
ExprKind::Call { func, .. } => {
|
||||
if let ExprKind::Name { id, .. } = &func.node {
|
||||
if id == "NotImplemented" {
|
||||
return Some(Check::new(CheckKind::RaiseNotImplemented, expr.location));
|
||||
return Some(Check::new(
|
||||
CheckKind::RaiseNotImplemented,
|
||||
Range::from_located(expr),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
ExprKind::Name { id, .. } => {
|
||||
if id == "NotImplemented" {
|
||||
return Some(Check::new(CheckKind::RaiseNotImplemented, expr.location));
|
||||
return Some(Check::new(
|
||||
CheckKind::RaiseNotImplemented,
|
||||
Range::from_located(expr),
|
||||
));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
|
@ -258,7 +266,10 @@ pub fn check_duplicate_arguments(arguments: &Arguments) -> Vec<Check> {
|
|||
for arg in all_arguments {
|
||||
let ident = &arg.node.arg;
|
||||
if idents.contains(ident.as_str()) {
|
||||
checks.push(Check::new(CheckKind::DuplicateArgumentName, arg.location));
|
||||
checks.push(Check::new(
|
||||
CheckKind::DuplicateArgumentName,
|
||||
Range::from_located(arg),
|
||||
));
|
||||
}
|
||||
idents.insert(ident);
|
||||
}
|
||||
|
|
@ -272,12 +283,16 @@ pub fn check_assert_equals(expr: &Expr, autofix: &fixer::Mode) -> Option<Check>
|
|||
if attr == "assertEquals" {
|
||||
if let ExprKind::Name { id, .. } = &value.node {
|
||||
if id == "self" {
|
||||
let mut check = Check::new(CheckKind::NoAssertEquals, expr.location);
|
||||
let mut check =
|
||||
Check::new(CheckKind::NoAssertEquals, Range::from_located(expr));
|
||||
if matches!(autofix, fixer::Mode::Generate | fixer::Mode::Apply) {
|
||||
check.amend(Fix {
|
||||
content: "assertEqual".to_string(),
|
||||
start: Location::new(expr.location.row(), expr.location.column() + 1),
|
||||
end: Location::new(
|
||||
location: Location::new(
|
||||
expr.location.row(),
|
||||
expr.location.column() + 1,
|
||||
),
|
||||
end_location: Location::new(
|
||||
expr.location.row(),
|
||||
expr.location.column() + 1 + "assertEquals".len(),
|
||||
),
|
||||
|
|
@ -326,7 +341,7 @@ pub fn check_repeated_keys(
|
|||
if check_repeated_literals && v1 == v2 {
|
||||
checks.push(Check::new(
|
||||
CheckKind::MultiValueRepeatedKeyLiteral,
|
||||
locator.locate_check(k2.location),
|
||||
locator.locate_check(Range::from_located(k2)),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
@ -334,7 +349,7 @@ pub fn check_repeated_keys(
|
|||
if check_repeated_variables && v1 == v2 {
|
||||
checks.push(Check::new(
|
||||
CheckKind::MultiValueRepeatedKeyVariable((*v2).to_string()),
|
||||
locator.locate_check(k2.location),
|
||||
locator.locate_check(Range::from_located(k2)),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
@ -373,13 +388,13 @@ pub fn check_literal_comparisons(
|
|||
if matches!(op, Cmpop::Eq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NoneComparison(RejectedCmpop::Eq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
if matches!(op, Cmpop::NotEq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NoneComparison(RejectedCmpop::NotEq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -393,13 +408,13 @@ pub fn check_literal_comparisons(
|
|||
if matches!(op, Cmpop::Eq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::TrueFalseComparison(value, RejectedCmpop::Eq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
if matches!(op, Cmpop::NotEq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::TrueFalseComparison(value, RejectedCmpop::NotEq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -419,13 +434,13 @@ pub fn check_literal_comparisons(
|
|||
if matches!(op, Cmpop::Eq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NoneComparison(RejectedCmpop::Eq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
if matches!(op, Cmpop::NotEq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::NoneComparison(RejectedCmpop::NotEq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -439,13 +454,13 @@ pub fn check_literal_comparisons(
|
|||
if matches!(op, Cmpop::Eq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::TrueFalseComparison(value, RejectedCmpop::Eq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
if matches!(op, Cmpop::NotEq) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::TrueFalseComparison(value, RejectedCmpop::NotEq),
|
||||
locator.locate_check(comparator.location),
|
||||
locator.locate_check(Range::from_located(comparator)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -482,7 +497,7 @@ pub fn check_is_literal(
|
|||
left: &Expr,
|
||||
ops: &Vec<Cmpop>,
|
||||
comparators: &Vec<Expr>,
|
||||
location: Location,
|
||||
location: Range,
|
||||
) -> Vec<Check> {
|
||||
let mut checks: Vec<Check> = vec![];
|
||||
|
||||
|
|
@ -503,7 +518,7 @@ pub fn check_is_literal(
|
|||
pub fn check_type_comparison(
|
||||
ops: &Vec<Cmpop>,
|
||||
comparators: &Vec<Expr>,
|
||||
location: Location,
|
||||
location: Range,
|
||||
) -> Vec<Check> {
|
||||
let mut checks: Vec<Check> = vec![];
|
||||
|
||||
|
|
@ -544,7 +559,7 @@ pub fn check_starred_expressions(
|
|||
elts: &[Expr],
|
||||
check_too_many_expressions: bool,
|
||||
check_two_starred_expressions: bool,
|
||||
location: Location,
|
||||
location: Range,
|
||||
) -> Option<Check> {
|
||||
let mut has_starred: bool = false;
|
||||
let mut starred_index: Option<usize> = None;
|
||||
|
|
@ -606,7 +621,7 @@ pub fn check_break_outside_loop(
|
|||
if !allowed {
|
||||
Some(Check::new(
|
||||
CheckKind::BreakOutsideLoop,
|
||||
locator.locate_check(stmt.location),
|
||||
locator.locate_check(Range::from_located(stmt)),
|
||||
))
|
||||
} else {
|
||||
None
|
||||
|
|
@ -647,7 +662,7 @@ pub fn check_continue_outside_loop(
|
|||
if !allowed {
|
||||
Some(Check::new(
|
||||
CheckKind::ContinueOutsideLoop,
|
||||
locator.locate_check(stmt.location),
|
||||
locator.locate_check(Range::from_located(stmt)),
|
||||
))
|
||||
} else {
|
||||
None
|
||||
|
|
@ -664,7 +679,7 @@ pub enum ShadowingType {
|
|||
/// Check builtin name shadowing
|
||||
pub fn check_builtin_shadowing(
|
||||
name: &str,
|
||||
location: Location,
|
||||
location: Range,
|
||||
node_type: ShadowingType,
|
||||
) -> Option<Check> {
|
||||
if BUILTINS.contains(&name) {
|
||||
|
|
@ -688,7 +703,7 @@ pub fn check_super_args(expr: &Expr, args: &Vec<Expr>) -> Option<Check> {
|
|||
if id == "super" && !args.is_empty() {
|
||||
return Some(Check::new(
|
||||
CheckKind::SuperCallWithParameters,
|
||||
expr.location,
|
||||
Range::from_located(expr),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
use rustpython_parser::ast::{Expr, ExprKind, Keyword, Location};
|
||||
use rustpython_parser::ast::{Expr, ExprKind, Keyword};
|
||||
|
||||
fn relocate_keyword(keyword: &mut Keyword, location: Location) {
|
||||
keyword.location = location;
|
||||
use crate::ast::types::Range;
|
||||
|
||||
fn relocate_keyword(keyword: &mut Keyword, location: Range) {
|
||||
keyword.location = location.location;
|
||||
keyword.end_location = location.end_location;
|
||||
relocate_expr(&mut keyword.node.value, location);
|
||||
}
|
||||
|
||||
/// Change an expression's location (recursively) to match a desired, fixed location.
|
||||
pub fn relocate_expr(expr: &mut Expr, location: Location) {
|
||||
expr.location = location;
|
||||
pub fn relocate_expr(expr: &mut Expr, location: Range) {
|
||||
expr.location = location.location;
|
||||
expr.end_location = location.end_location;
|
||||
match &mut expr.node {
|
||||
ExprKind::BoolOp { values, .. } => {
|
||||
for expr in values {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,28 @@
|
|||
use std::collections::BTreeMap;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
|
||||
use rustpython_parser::ast::Location;
|
||||
use rustpython_parser::ast::{Located, Location};
|
||||
|
||||
fn id() -> usize {
|
||||
static COUNTER: AtomicUsize = AtomicUsize::new(1);
|
||||
COUNTER.fetch_add(1, Ordering::Relaxed)
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Default)]
|
||||
pub struct Range {
|
||||
pub location: Location,
|
||||
pub end_location: Location,
|
||||
}
|
||||
|
||||
impl Range {
|
||||
pub fn from_located<T>(located: &Located<T>) -> Self {
|
||||
Range {
|
||||
location: located.location,
|
||||
end_location: located.end_location,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct FunctionScope {
|
||||
pub uses_locals: bool,
|
||||
|
|
@ -60,12 +75,12 @@ pub enum BindingKind {
|
|||
#[derive(Clone, Debug)]
|
||||
pub struct Binding {
|
||||
pub kind: BindingKind,
|
||||
pub location: Location,
|
||||
/// Tuple of (scope index, location) indicating the scope and location at which the binding was
|
||||
pub location: Range,
|
||||
/// Tuple of (scope index, range) indicating the scope and range at which the binding was
|
||||
/// last used.
|
||||
pub used: Option<(usize, Location)>,
|
||||
pub used: Option<(usize, Range)>,
|
||||
}
|
||||
|
||||
pub trait CheckLocator {
|
||||
fn locate_check(&self, default: Location) -> Location;
|
||||
fn locate_check(&self, default: Range) -> Range;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,29 +45,29 @@ fn apply_fixes<'a>(fixes: impl Iterator<Item = &'a mut Fix>, contents: &str) ->
|
|||
|
||||
for fix in fixes {
|
||||
// Best-effort approach: if this fix overlaps with a fix we've already applied, skip it.
|
||||
if last_pos > fix.start {
|
||||
if last_pos > fix.location {
|
||||
continue;
|
||||
}
|
||||
|
||||
if fix.start.row() > last_pos.row() {
|
||||
if fix.location.row() > last_pos.row() {
|
||||
if last_pos.row() > 0 || last_pos.column() > 0 {
|
||||
output.push_str(&lines[last_pos.row() - 1][last_pos.column() - 1..]);
|
||||
output.push('\n');
|
||||
}
|
||||
for line in &lines[last_pos.row()..fix.start.row() - 1] {
|
||||
for line in &lines[last_pos.row()..fix.location.row() - 1] {
|
||||
output.push_str(line);
|
||||
output.push('\n');
|
||||
}
|
||||
output.push_str(&lines[fix.start.row() - 1][..fix.start.column() - 1]);
|
||||
output.push_str(&lines[fix.location.row() - 1][..fix.location.column() - 1]);
|
||||
output.push_str(&fix.content);
|
||||
} else {
|
||||
output.push_str(
|
||||
&lines[last_pos.row() - 1][last_pos.column() - 1..fix.start.column() - 1],
|
||||
&lines[last_pos.row() - 1][last_pos.column() - 1..fix.location.column() - 1],
|
||||
);
|
||||
output.push_str(&fix.content);
|
||||
}
|
||||
|
||||
last_pos = fix.end;
|
||||
last_pos = fix.end_location;
|
||||
fix.applied = true;
|
||||
}
|
||||
|
||||
|
|
@ -106,8 +106,8 @@ mod tests {
|
|||
fn apply_single_replacement() -> Result<()> {
|
||||
let mut fixes = vec![Fix {
|
||||
content: "Bar".to_string(),
|
||||
start: Location::new(1, 9),
|
||||
end: Location::new(1, 15),
|
||||
location: Location::new(1, 9),
|
||||
end_location: Location::new(1, 15),
|
||||
applied: false,
|
||||
}];
|
||||
let actual = apply_fixes(
|
||||
|
|
@ -130,8 +130,8 @@ mod tests {
|
|||
fn apply_single_removal() -> Result<()> {
|
||||
let mut fixes = vec![Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(1, 8),
|
||||
end: Location::new(1, 16),
|
||||
location: Location::new(1, 8),
|
||||
end_location: Location::new(1, 16),
|
||||
applied: false,
|
||||
}];
|
||||
let actual = apply_fixes(
|
||||
|
|
@ -155,14 +155,14 @@ mod tests {
|
|||
let mut fixes = vec![
|
||||
Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(1, 8),
|
||||
end: Location::new(1, 17),
|
||||
location: Location::new(1, 8),
|
||||
end_location: Location::new(1, 17),
|
||||
applied: false,
|
||||
},
|
||||
Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(1, 17),
|
||||
end: Location::new(1, 24),
|
||||
location: Location::new(1, 17),
|
||||
end_location: Location::new(1, 24),
|
||||
applied: false,
|
||||
},
|
||||
];
|
||||
|
|
@ -187,14 +187,14 @@ mod tests {
|
|||
let mut fixes = vec![
|
||||
Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(1, 8),
|
||||
end: Location::new(1, 16),
|
||||
location: Location::new(1, 8),
|
||||
end_location: Location::new(1, 16),
|
||||
applied: false,
|
||||
},
|
||||
Fix {
|
||||
content: "ignored".to_string(),
|
||||
start: Location::new(1, 10),
|
||||
end: Location::new(1, 12),
|
||||
location: Location::new(1, 10),
|
||||
end_location: Location::new(1, 12),
|
||||
applied: false,
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@ pub fn remove_class_def_base(
|
|||
return match (fix_start, fix_end) {
|
||||
(Some(start), Some(end)) => Some(Fix {
|
||||
content: "".to_string(),
|
||||
start,
|
||||
end,
|
||||
location: start,
|
||||
end_location: end,
|
||||
applied: false,
|
||||
}),
|
||||
_ => None,
|
||||
|
|
@ -91,8 +91,8 @@ pub fn remove_class_def_base(
|
|||
match (fix_start, fix_end) {
|
||||
(Some(start), Some(end)) => Some(Fix {
|
||||
content: "".to_string(),
|
||||
start,
|
||||
end,
|
||||
location: start,
|
||||
end_location: end,
|
||||
applied: false,
|
||||
}),
|
||||
_ => None,
|
||||
|
|
@ -116,8 +116,8 @@ pub fn remove_class_def_base(
|
|||
match (fix_start, fix_end) {
|
||||
(Some(start), Some(end)) => Some(Fix {
|
||||
content: "".to_string(),
|
||||
start,
|
||||
end,
|
||||
location: start,
|
||||
end_location: end,
|
||||
applied: false,
|
||||
}),
|
||||
_ => None,
|
||||
|
|
|
|||
156
src/check_ast.rs
156
src/check_ast.rs
|
|
@ -5,13 +5,15 @@ use once_cell::sync::Lazy;
|
|||
use regex::Regex;
|
||||
use rustpython_parser::ast::{
|
||||
Arg, Arguments, Constant, Excepthandler, ExcepthandlerKind, Expr, ExprContext, ExprKind,
|
||||
KeywordData, Location, Operator, Stmt, StmtKind, Suite,
|
||||
KeywordData, Operator, Stmt, StmtKind, Suite,
|
||||
};
|
||||
use rustpython_parser::parser;
|
||||
|
||||
use crate::ast::operations::{extract_all_names, SourceCodeLocator};
|
||||
use crate::ast::relocate::relocate_expr;
|
||||
use crate::ast::types::{Binding, BindingKind, CheckLocator, FunctionScope, Scope, ScopeKind};
|
||||
use crate::ast::types::{
|
||||
Binding, BindingKind, CheckLocator, FunctionScope, Range, Scope, ScopeKind,
|
||||
};
|
||||
use crate::ast::visitor::{walk_excepthandler, Visitor};
|
||||
use crate::ast::{checks, operations, visitor};
|
||||
use crate::autofix::fixer;
|
||||
|
|
@ -40,13 +42,13 @@ struct Checker<'a> {
|
|||
scopes: Vec<Scope>,
|
||||
scope_stack: Vec<usize>,
|
||||
dead_scopes: Vec<usize>,
|
||||
deferred_string_annotations: Vec<(Location, &'a str)>,
|
||||
deferred_string_annotations: Vec<(Range, &'a str)>,
|
||||
deferred_annotations: Vec<(&'a Expr, Vec<usize>, Vec<usize>)>,
|
||||
deferred_functions: Vec<(&'a Stmt, Vec<usize>, Vec<usize>)>,
|
||||
deferred_lambdas: Vec<(&'a Expr, Vec<usize>, Vec<usize>)>,
|
||||
deferred_assignments: Vec<usize>,
|
||||
// Derivative state.
|
||||
in_f_string: Option<Location>,
|
||||
in_f_string: Option<Range>,
|
||||
in_annotation: bool,
|
||||
in_literal: bool,
|
||||
seen_non_import: bool,
|
||||
|
|
@ -218,8 +220,8 @@ where
|
|||
name.to_string(),
|
||||
Binding {
|
||||
kind: BindingKind::Assignment,
|
||||
used: Some((global_scope_id, stmt.location)),
|
||||
location: stmt.location,
|
||||
used: Some((global_scope_id, Range::from_located(stmt))),
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -227,7 +229,7 @@ where
|
|||
}
|
||||
|
||||
if self.settings.select.contains(&CheckCode::E741) {
|
||||
let location = self.locate_check(stmt.location);
|
||||
let location = self.locate_check(Range::from_located(stmt));
|
||||
self.checks.extend(
|
||||
names.iter().filter_map(|name| {
|
||||
checks::check_ambiguous_variable_name(name, location)
|
||||
|
|
@ -276,13 +278,13 @@ where
|
|||
if self.settings.select.contains(&CheckCode::E743) {
|
||||
if let Some(check) = checks::check_ambiguous_function_name(
|
||||
name,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
||||
self.check_builtin_shadowing(name, stmt.location, true);
|
||||
self.check_builtin_shadowing(name, Range::from_located(stmt), true);
|
||||
|
||||
for expr in decorator_list {
|
||||
self.visit_expr(expr);
|
||||
|
|
@ -326,7 +328,7 @@ where
|
|||
Binding {
|
||||
kind: BindingKind::Definition,
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -341,7 +343,7 @@ where
|
|||
ScopeKind::Class | ScopeKind::Module => {
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ReturnOutsideFunction,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
_ => {}
|
||||
|
|
@ -373,14 +375,19 @@ where
|
|||
}
|
||||
|
||||
if self.settings.select.contains(&CheckCode::E742) {
|
||||
if let Some(check) =
|
||||
checks::check_ambiguous_class_name(name, self.locate_check(stmt.location))
|
||||
{
|
||||
if let Some(check) = checks::check_ambiguous_class_name(
|
||||
name,
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
||||
self.check_builtin_shadowing(name, self.locate_check(stmt.location), false);
|
||||
self.check_builtin_shadowing(
|
||||
name,
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
false,
|
||||
);
|
||||
|
||||
for expr in bases {
|
||||
self.visit_expr(expr)
|
||||
|
|
@ -403,7 +410,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ModuleImportNotAtTopOfFile,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -418,12 +425,12 @@ where
|
|||
alias.node.name.to_string(),
|
||||
),
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
)
|
||||
} else {
|
||||
if let Some(asname) = &alias.node.asname {
|
||||
self.check_builtin_shadowing(asname, stmt.location, false);
|
||||
self.check_builtin_shadowing(asname, Range::from_located(stmt), false);
|
||||
}
|
||||
|
||||
self.add_binding(
|
||||
|
|
@ -441,7 +448,7 @@ where
|
|||
.unwrap_or_else(|| alias.node.name.clone()),
|
||||
),
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -461,7 +468,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ModuleImportNotAtTopOfFile,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -482,9 +489,9 @@ where
|
|||
.last()
|
||||
.expect("No current scope found."))]
|
||||
.id,
|
||||
stmt.location,
|
||||
Range::from_located(stmt),
|
||||
)),
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
);
|
||||
|
||||
|
|
@ -497,7 +504,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::FutureFeatureNotDefined(alias.node.name.to_string()),
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -505,7 +512,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::LateFutureImport,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
} else if alias.node.name == "*" {
|
||||
|
|
@ -520,7 +527,7 @@ where
|
|||
Binding {
|
||||
kind: BindingKind::StarImportation,
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
);
|
||||
|
||||
|
|
@ -530,7 +537,7 @@ where
|
|||
if !matches!(scope.kind, ScopeKind::Module) {
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ImportStarNotPermitted(module_name.to_string()),
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -538,7 +545,7 @@ where
|
|||
if self.settings.select.contains(&CheckCode::F403) {
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ImportStarUsed(module_name.to_string()),
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -549,7 +556,7 @@ where
|
|||
scope.import_starred = true;
|
||||
} else {
|
||||
if let Some(asname) = &alias.node.asname {
|
||||
self.check_builtin_shadowing(asname, stmt.location, false);
|
||||
self.check_builtin_shadowing(asname, Range::from_located(stmt), false);
|
||||
}
|
||||
|
||||
let binding = Binding {
|
||||
|
|
@ -558,7 +565,7 @@ where
|
|||
Some(parent) => format!("{}.{}", parent, name),
|
||||
}),
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
};
|
||||
self.add_binding(name, binding)
|
||||
}
|
||||
|
|
@ -579,7 +586,7 @@ where
|
|||
StmtKind::If { test, .. } => {
|
||||
if self.settings.select.contains(&CheckCode::F634) {
|
||||
if let Some(check) =
|
||||
checks::check_if_tuple(test, self.locate_check(stmt.location))
|
||||
checks::check_if_tuple(test, self.locate_check(Range::from_located(stmt)))
|
||||
{
|
||||
self.checks.push(check);
|
||||
}
|
||||
|
|
@ -587,9 +594,10 @@ where
|
|||
}
|
||||
StmtKind::Assert { test, .. } => {
|
||||
if self.settings.select.contains(CheckKind::AssertTuple.code()) {
|
||||
if let Some(check) =
|
||||
checks::check_assert_tuple(test, self.locate_check(stmt.location))
|
||||
{
|
||||
if let Some(check) = checks::check_assert_tuple(
|
||||
test,
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
|
@ -603,9 +611,10 @@ where
|
|||
}
|
||||
StmtKind::Assign { value, .. } => {
|
||||
if self.settings.select.contains(&CheckCode::E731) {
|
||||
if let Some(check) =
|
||||
checks::check_do_not_assign_lambda(value, self.locate_check(stmt.location))
|
||||
{
|
||||
if let Some(check) = checks::check_do_not_assign_lambda(
|
||||
value,
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
|
@ -615,7 +624,7 @@ where
|
|||
if let Some(value) = value {
|
||||
if let Some(check) = checks::check_do_not_assign_lambda(
|
||||
value,
|
||||
self.locate_check(stmt.location),
|
||||
self.locate_check(Range::from_located(stmt)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
|
|
@ -651,7 +660,7 @@ where
|
|||
Binding {
|
||||
kind: BindingKind::ClassDefinition,
|
||||
used: None,
|
||||
location: stmt.location,
|
||||
location: Range::from_located(stmt),
|
||||
},
|
||||
);
|
||||
};
|
||||
|
|
@ -698,7 +707,7 @@ where
|
|||
elts,
|
||||
check_too_many_expressions,
|
||||
check_two_starred_expressions,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
|
|
@ -710,13 +719,13 @@ where
|
|||
if self.settings.select.contains(&CheckCode::E741) {
|
||||
if let Some(check) = checks::check_ambiguous_variable_name(
|
||||
id,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
||||
self.check_builtin_shadowing(id, expr.location, true);
|
||||
self.check_builtin_shadowing(id, Range::from_located(expr), true);
|
||||
|
||||
let parent =
|
||||
self.parents[*(self.parent_stack.last().expect("No parent found."))];
|
||||
|
|
@ -776,7 +785,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::YieldOutsideFunction,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -792,10 +801,10 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::FStringMissingPlaceholders,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
));
|
||||
}
|
||||
self.in_f_string = Some(expr.location);
|
||||
self.in_f_string = Some(Range::from_located(expr));
|
||||
}
|
||||
ExprKind::BinOp {
|
||||
left,
|
||||
|
|
@ -812,8 +821,10 @@ where
|
|||
..
|
||||
}) = scope.values.get("print")
|
||||
{
|
||||
self.checks
|
||||
.push(Check::new(CheckKind::InvalidPrintSyntax, left.location));
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::InvalidPrintSyntax,
|
||||
Range::from_located(left),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -855,7 +866,7 @@ where
|
|||
left,
|
||||
ops,
|
||||
comparators,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -863,7 +874,7 @@ where
|
|||
self.checks.extend(checks::check_type_comparison(
|
||||
ops,
|
||||
comparators,
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -872,7 +883,7 @@ where
|
|||
..
|
||||
} if self.in_annotation && !self.in_literal => {
|
||||
self.deferred_string_annotations
|
||||
.push((expr.location, value));
|
||||
.push((Range::from_located(expr), value));
|
||||
}
|
||||
ExprKind::GeneratorExp { .. }
|
||||
| ExprKind::ListComp { .. }
|
||||
|
|
@ -1022,7 +1033,7 @@ where
|
|||
if self.settings.select.contains(&CheckCode::E722) && type_.is_none() {
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::DoNotUseBareExcept,
|
||||
excepthandler.location,
|
||||
Range::from_located(excepthandler),
|
||||
));
|
||||
}
|
||||
match name {
|
||||
|
|
@ -1030,13 +1041,17 @@ where
|
|||
if self.settings.select.contains(&CheckCode::E741) {
|
||||
if let Some(check) = checks::check_ambiguous_variable_name(
|
||||
name,
|
||||
self.locate_check(excepthandler.location),
|
||||
self.locate_check(Range::from_located(excepthandler)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
||||
self.check_builtin_shadowing(name, excepthandler.location, false);
|
||||
self.check_builtin_shadowing(
|
||||
name,
|
||||
Range::from_located(excepthandler),
|
||||
false,
|
||||
);
|
||||
|
||||
let scope = &self.scopes
|
||||
[*(self.scope_stack.last().expect("No current scope found."))];
|
||||
|
|
@ -1085,7 +1100,7 @@ where
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::UnusedVariable(name.to_string()),
|
||||
excepthandler.location,
|
||||
Range::from_located(excepthandler),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -1131,25 +1146,25 @@ where
|
|||
Binding {
|
||||
kind: BindingKind::Argument,
|
||||
used: None,
|
||||
location: arg.location,
|
||||
location: Range::from_located(arg),
|
||||
},
|
||||
);
|
||||
|
||||
if self.settings.select.contains(&CheckCode::E741) {
|
||||
if let Some(check) = checks::check_ambiguous_variable_name(
|
||||
&arg.node.arg,
|
||||
self.locate_check(arg.location),
|
||||
self.locate_check(Range::from_located(arg)),
|
||||
) {
|
||||
self.checks.push(check);
|
||||
}
|
||||
}
|
||||
|
||||
self.check_builtin_arg_shadowing(&arg.node.arg, arg.location);
|
||||
self.check_builtin_arg_shadowing(&arg.node.arg, Range::from_located(arg));
|
||||
}
|
||||
}
|
||||
|
||||
impl CheckLocator for Checker<'_> {
|
||||
fn locate_check(&self, default: Location) -> Location {
|
||||
fn locate_check(&self, default: Range) -> Range {
|
||||
self.in_f_string.unwrap_or(default)
|
||||
}
|
||||
}
|
||||
|
|
@ -1216,7 +1231,10 @@ impl<'a> Checker<'a> {
|
|||
&& matches!(binding.kind, BindingKind::LoopVar)
|
||||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ImportShadowedByLoopVar(name.clone(), existing.location.row()),
|
||||
CheckKind::ImportShadowedByLoopVar(
|
||||
name.clone(),
|
||||
existing.location.location.row(),
|
||||
),
|
||||
binding.location,
|
||||
));
|
||||
}
|
||||
|
|
@ -1249,7 +1267,7 @@ impl<'a> Checker<'a> {
|
|||
}
|
||||
}
|
||||
if let Some(binding) = scope.values.get_mut(id) {
|
||||
binding.used = Some((scope_id, expr.location));
|
||||
binding.used = Some((scope_id, Range::from_located(expr)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1273,7 +1291,7 @@ impl<'a> Checker<'a> {
|
|||
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::ImportStarUsage(id.clone(), from_list.join(", ")),
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
));
|
||||
}
|
||||
return;
|
||||
|
|
@ -1286,7 +1304,7 @@ impl<'a> Checker<'a> {
|
|||
}
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::UndefinedName(id.clone()),
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
@ -1323,7 +1341,7 @@ impl<'a> Checker<'a> {
|
|||
Binding {
|
||||
kind: BindingKind::Annotation,
|
||||
used: None,
|
||||
location: expr.location,
|
||||
location: Range::from_located(expr),
|
||||
},
|
||||
);
|
||||
return;
|
||||
|
|
@ -1339,7 +1357,7 @@ impl<'a> Checker<'a> {
|
|||
Binding {
|
||||
kind: BindingKind::LoopVar,
|
||||
used: None,
|
||||
location: expr.location,
|
||||
location: Range::from_located(expr),
|
||||
},
|
||||
);
|
||||
return;
|
||||
|
|
@ -1351,7 +1369,7 @@ impl<'a> Checker<'a> {
|
|||
Binding {
|
||||
kind: BindingKind::Binding,
|
||||
used: None,
|
||||
location: expr.location,
|
||||
location: Range::from_located(expr),
|
||||
},
|
||||
);
|
||||
return;
|
||||
|
|
@ -1371,7 +1389,7 @@ impl<'a> Checker<'a> {
|
|||
Binding {
|
||||
kind: BindingKind::Export(extract_all_names(parent, current)),
|
||||
used: None,
|
||||
location: expr.location,
|
||||
location: Range::from_located(expr),
|
||||
},
|
||||
);
|
||||
return;
|
||||
|
|
@ -1382,7 +1400,7 @@ impl<'a> Checker<'a> {
|
|||
Binding {
|
||||
kind: BindingKind::Assignment,
|
||||
used: None,
|
||||
location: expr.location,
|
||||
location: Range::from_located(expr),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -1401,7 +1419,7 @@ impl<'a> Checker<'a> {
|
|||
{
|
||||
self.checks.push(Check::new(
|
||||
CheckKind::UndefinedName(id.clone()),
|
||||
self.locate_check(expr.location),
|
||||
self.locate_check(Range::from_located(expr)),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
@ -1571,7 +1589,7 @@ impl<'a> Checker<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn check_builtin_shadowing(&mut self, name: &str, location: Location, is_attribute: bool) {
|
||||
fn check_builtin_shadowing(&mut self, name: &str, location: Range, is_attribute: bool) {
|
||||
let scope = &self.scopes[*(self.scope_stack.last().expect("No current scope found."))];
|
||||
|
||||
// flake8-builtins
|
||||
|
|
@ -1597,7 +1615,7 @@ impl<'a> Checker<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn check_builtin_arg_shadowing(&mut self, name: &str, location: Location) {
|
||||
fn check_builtin_arg_shadowing(&mut self, name: &str, location: Range) {
|
||||
if self.settings.select.contains(&CheckCode::A002) {
|
||||
if let Some(check) = checks::check_builtin_shadowing(
|
||||
name,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use std::collections::BTreeMap;
|
||||
|
||||
use crate::ast::types::Range;
|
||||
use rustpython_parser::ast::Location;
|
||||
|
||||
use crate::autofix::fixer;
|
||||
|
|
@ -64,11 +65,11 @@ pub fn check_lines(
|
|||
.or_insert_with(|| (noqa::extract_noqa_directive(lines[noqa_lineno]), vec![]));
|
||||
|
||||
match noqa {
|
||||
(Directive::All(_), matches) => {
|
||||
(Directive::All(_, _), matches) => {
|
||||
matches.push(check.kind.code().as_str());
|
||||
ignored.push(index)
|
||||
}
|
||||
(Directive::Codes(_, codes), matches) => {
|
||||
(Directive::Codes(_, _, codes), matches) => {
|
||||
if codes.contains(&check.kind.code().as_str()) {
|
||||
matches.push(check.kind.code().as_str());
|
||||
ignored.push(index);
|
||||
|
|
@ -89,14 +90,17 @@ pub fn check_lines(
|
|||
|
||||
let check = Check::new(
|
||||
CheckKind::LineTooLong(line_length, settings.line_length),
|
||||
Location::new(lineno + 1, settings.line_length + 1),
|
||||
Range {
|
||||
location: Location::new(lineno + 1, 1),
|
||||
end_location: Location::new(lineno + 1, line_length + 1),
|
||||
},
|
||||
);
|
||||
|
||||
match noqa {
|
||||
(Directive::All(_), matches) => {
|
||||
(Directive::All(_, _), matches) => {
|
||||
matches.push(check.kind.code().as_str());
|
||||
}
|
||||
(Directive::Codes(_, codes), matches) => {
|
||||
(Directive::Codes(_, _, codes), matches) => {
|
||||
if codes.contains(&check.kind.code().as_str()) {
|
||||
matches.push(check.kind.code().as_str());
|
||||
} else {
|
||||
|
|
@ -113,24 +117,30 @@ pub fn check_lines(
|
|||
if enforce_noqa {
|
||||
for (row, (directive, matches)) in noqa_directives {
|
||||
match directive {
|
||||
Directive::All(column) => {
|
||||
Directive::All(start, end) => {
|
||||
if matches.is_empty() {
|
||||
let mut check = Check::new(
|
||||
CheckKind::UnusedNOQA(None),
|
||||
Location::new(row + 1, column + 1),
|
||||
Range {
|
||||
location: Location::new(row + 1, start + 1),
|
||||
end_location: Location::new(row + 1, end + 1),
|
||||
},
|
||||
);
|
||||
if matches!(autofix, fixer::Mode::Generate | fixer::Mode::Apply) {
|
||||
check.amend(Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(row + 1, column + 1),
|
||||
end: Location::new(row + 1, lines[row].chars().count() + 1),
|
||||
location: Location::new(row + 1, start + 1),
|
||||
end_location: Location::new(
|
||||
row + 1,
|
||||
lines[row].chars().count() + 1,
|
||||
),
|
||||
applied: false,
|
||||
});
|
||||
}
|
||||
line_checks.push(check);
|
||||
}
|
||||
}
|
||||
Directive::Codes(column, codes) => {
|
||||
Directive::Codes(start, end, codes) => {
|
||||
let mut invalid_codes = vec![];
|
||||
let mut valid_codes = vec![];
|
||||
for code in codes {
|
||||
|
|
@ -144,21 +154,30 @@ pub fn check_lines(
|
|||
if !invalid_codes.is_empty() {
|
||||
let mut check = Check::new(
|
||||
CheckKind::UnusedNOQA(Some(invalid_codes.join(", "))),
|
||||
Location::new(row + 1, column + 1),
|
||||
Range {
|
||||
location: Location::new(row + 1, start + 1),
|
||||
end_location: Location::new(row + 1, end + 1),
|
||||
},
|
||||
);
|
||||
if matches!(autofix, fixer::Mode::Generate | fixer::Mode::Apply) {
|
||||
if valid_codes.is_empty() {
|
||||
check.amend(Fix {
|
||||
content: "".to_string(),
|
||||
start: Location::new(row + 1, column + 1),
|
||||
end: Location::new(row + 1, lines[row].chars().count() + 1),
|
||||
location: Location::new(row + 1, start + 1),
|
||||
end_location: Location::new(
|
||||
row + 1,
|
||||
lines[row].chars().count() + 1,
|
||||
),
|
||||
applied: false,
|
||||
});
|
||||
} else {
|
||||
check.amend(Fix {
|
||||
content: format!(" # noqa: {}", valid_codes.join(", ")),
|
||||
start: Location::new(row + 1, column + 1),
|
||||
end: Location::new(row + 1, lines[row].chars().count() + 1),
|
||||
location: Location::new(row + 1, start + 1),
|
||||
end_location: Location::new(
|
||||
row + 1,
|
||||
lines[row].chars().count() + 1,
|
||||
),
|
||||
applied: false,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
use crate::ast::types::Range;
|
||||
use anyhow::Result;
|
||||
use rustpython_parser::ast::Location;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
@ -718,8 +719,8 @@ impl CheckKind {
|
|||
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct Fix {
|
||||
pub content: String,
|
||||
pub start: Location,
|
||||
pub end: Location,
|
||||
pub location: Location,
|
||||
pub end_location: Location,
|
||||
pub applied: bool,
|
||||
}
|
||||
|
||||
|
|
@ -727,14 +728,16 @@ pub struct Fix {
|
|||
pub struct Check {
|
||||
pub kind: CheckKind,
|
||||
pub location: Location,
|
||||
pub end_location: Location,
|
||||
pub fix: Option<Fix>,
|
||||
}
|
||||
|
||||
impl Check {
|
||||
pub fn new(kind: CheckKind, location: Location) -> Self {
|
||||
pub fn new(kind: CheckKind, span: Range) -> Self {
|
||||
Self {
|
||||
kind,
|
||||
location,
|
||||
location: span.location,
|
||||
end_location: span.end_location,
|
||||
fix: None,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ pub fn check(path: &Path, contents: &str) -> Result<Vec<Message>> {
|
|||
kind: check.kind,
|
||||
fixed: check.fix.map(|fix| fix.applied).unwrap_or_default(),
|
||||
location: check.location,
|
||||
end_location: check.end_location,
|
||||
filename: path.to_string_lossy().to_string(),
|
||||
})
|
||||
.collect();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use log::debug;
|
|||
use rustpython_parser::lexer::LexResult;
|
||||
use rustpython_parser::{lexer, parser};
|
||||
|
||||
use crate::ast::types::Range;
|
||||
use crate::autofix::fixer;
|
||||
use crate::autofix::fixer::fix_file;
|
||||
use crate::check_ast::check_ast;
|
||||
|
|
@ -53,7 +54,10 @@ pub(crate) fn check_path(
|
|||
if settings.select.contains(&CheckCode::E999) {
|
||||
checks.push(Check::new(
|
||||
CheckKind::SyntaxError(parse_error.error.to_string()),
|
||||
parse_error.location,
|
||||
Range {
|
||||
location: parse_error.location,
|
||||
end_location: parse_error.location,
|
||||
},
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
@ -115,6 +119,7 @@ pub fn lint_path(
|
|||
kind: check.kind,
|
||||
fixed: check.fix.map(|fix| fix.applied).unwrap_or_default(),
|
||||
location: check.location,
|
||||
end_location: check.end_location,
|
||||
filename: path.to_string_lossy().to_string(),
|
||||
})
|
||||
.collect();
|
||||
|
|
|
|||
|
|
@ -170,6 +170,7 @@ fn run_once(
|
|||
kind: CheckKind::IOError(message),
|
||||
fixed: false,
|
||||
location: Default::default(),
|
||||
end_location: Default::default(),
|
||||
filename: path.to_string_lossy().to_string(),
|
||||
}]
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ pub struct Message {
|
|||
pub kind: CheckKind,
|
||||
pub fixed: bool,
|
||||
pub location: Location,
|
||||
pub end_location: Location,
|
||||
pub filename: String,
|
||||
}
|
||||
|
||||
|
|
|
|||
37
src/noqa.rs
37
src/noqa.rs
|
|
@ -19,8 +19,8 @@ static SPLIT_COMMA_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"[,\s]").expect
|
|||
#[derive(Debug)]
|
||||
pub enum Directive<'a> {
|
||||
None,
|
||||
All(usize),
|
||||
Codes(usize, Vec<&'a str>),
|
||||
All(usize, usize),
|
||||
Codes(usize, usize, Vec<&'a str>),
|
||||
}
|
||||
|
||||
pub fn extract_noqa_directive(line: &str) -> Directive {
|
||||
|
|
@ -29,13 +29,14 @@ pub fn extract_noqa_directive(line: &str) -> Directive {
|
|||
Some(noqa) => match caps.name("codes") {
|
||||
Some(codes) => Directive::Codes(
|
||||
noqa.start(),
|
||||
noqa.end(),
|
||||
SPLIT_COMMA_REGEX
|
||||
.split(codes.as_str())
|
||||
.map(|code| code.trim())
|
||||
.filter(|code| !code.is_empty())
|
||||
.collect(),
|
||||
),
|
||||
None => Directive::All(noqa.start()),
|
||||
None => Directive::All(noqa.start(), noqa.end()),
|
||||
},
|
||||
None => Directive::None,
|
||||
},
|
||||
|
|
@ -133,8 +134,8 @@ fn add_noqa_inner(
|
|||
Directive::None => {
|
||||
output.push_str(line);
|
||||
}
|
||||
Directive::All(start) => output.push_str(&line[..start]),
|
||||
Directive::Codes(start, _) => output.push_str(&line[..start]),
|
||||
Directive::All(start, _) => output.push_str(&line[..start]),
|
||||
Directive::Codes(start, _, _) => output.push_str(&line[..start]),
|
||||
};
|
||||
let codes: Vec<&str> = codes.iter().map(|code| code.as_str()).collect();
|
||||
output.push_str(" # noqa: ");
|
||||
|
|
@ -161,6 +162,7 @@ pub fn add_noqa(
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::ast::types::Range;
|
||||
use anyhow::Result;
|
||||
use rustpython_parser::ast::Location;
|
||||
use rustpython_parser::lexer;
|
||||
|
|
@ -236,7 +238,10 @@ z = x + 1",
|
|||
|
||||
let checks = vec![Check::new(
|
||||
CheckKind::UnusedVariable("x".to_string()),
|
||||
Location::new(1, 1),
|
||||
Range {
|
||||
location: Location::new(1, 1),
|
||||
end_location: Location::new(1, 1),
|
||||
},
|
||||
)];
|
||||
let contents = "x = 1";
|
||||
let noqa_line_for = vec![1];
|
||||
|
|
@ -247,11 +252,17 @@ z = x + 1",
|
|||
let checks = vec![
|
||||
Check::new(
|
||||
CheckKind::AmbiguousVariableName("x".to_string()),
|
||||
Location::new(1, 1),
|
||||
Range {
|
||||
location: Location::new(1, 1),
|
||||
end_location: Location::new(1, 1),
|
||||
},
|
||||
),
|
||||
Check::new(
|
||||
CheckKind::UnusedVariable("x".to_string()),
|
||||
Location::new(1, 1),
|
||||
Range {
|
||||
location: Location::new(1, 1),
|
||||
end_location: Location::new(1, 1),
|
||||
},
|
||||
),
|
||||
];
|
||||
let contents = "x = 1 # noqa: E741";
|
||||
|
|
@ -263,11 +274,17 @@ z = x + 1",
|
|||
let checks = vec![
|
||||
Check::new(
|
||||
CheckKind::AmbiguousVariableName("x".to_string()),
|
||||
Location::new(1, 1),
|
||||
Range {
|
||||
location: Location::new(1, 1),
|
||||
end_location: Location::new(1, 1),
|
||||
},
|
||||
),
|
||||
Check::new(
|
||||
CheckKind::UnusedVariable("x".to_string()),
|
||||
Location::new(1, 1),
|
||||
Range {
|
||||
location: Location::new(1, 1),
|
||||
end_location: Location::new(1, 1),
|
||||
},
|
||||
),
|
||||
];
|
||||
let contents = "x = 1 # noqa";
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ struct ExpandedMessage<'a> {
|
|||
message: String,
|
||||
fixed: bool,
|
||||
location: Location,
|
||||
end_location: Location,
|
||||
filename: &'a String,
|
||||
}
|
||||
|
||||
|
|
@ -55,6 +56,7 @@ impl Printer {
|
|||
message: m.kind.body(),
|
||||
fixed: m.fixed,
|
||||
location: m.location,
|
||||
end_location: m.end_location,
|
||||
filename: &m.filename,
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
|
|
|
|||
|
|
@ -7,106 +7,161 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 1
|
||||
column: 19
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: int
|
||||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 30
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: print
|
||||
location:
|
||||
row: 4
|
||||
column: 1
|
||||
end_location:
|
||||
row: 4
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: copyright
|
||||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: complex
|
||||
location:
|
||||
row: 6
|
||||
column: 2
|
||||
end_location:
|
||||
row: 6
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: float
|
||||
location:
|
||||
row: 7
|
||||
column: 1
|
||||
end_location:
|
||||
row: 7
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: object
|
||||
location:
|
||||
row: 7
|
||||
column: 9
|
||||
end_location:
|
||||
row: 7
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: min
|
||||
location:
|
||||
row: 8
|
||||
column: 1
|
||||
end_location:
|
||||
row: 8
|
||||
column: 4
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: max
|
||||
location:
|
||||
row: 8
|
||||
column: 6
|
||||
end_location:
|
||||
row: 8
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: bytes
|
||||
location:
|
||||
row: 10
|
||||
column: 1
|
||||
end_location:
|
||||
row: 13
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: slice
|
||||
location:
|
||||
row: 13
|
||||
column: 1
|
||||
end_location:
|
||||
row: 16
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: ValueError
|
||||
location:
|
||||
row: 18
|
||||
column: 1
|
||||
end_location:
|
||||
row: 21
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: memoryview
|
||||
location:
|
||||
row: 21
|
||||
column: 5
|
||||
end_location:
|
||||
row: 21
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: bytearray
|
||||
location:
|
||||
row: 21
|
||||
column: 18
|
||||
end_location:
|
||||
row: 21
|
||||
column: 27
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: str
|
||||
location:
|
||||
row: 24
|
||||
column: 22
|
||||
end_location:
|
||||
row: 24
|
||||
column: 25
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: all
|
||||
location:
|
||||
row: 24
|
||||
column: 45
|
||||
end_location:
|
||||
row: 24
|
||||
column: 48
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: any
|
||||
location:
|
||||
row: 24
|
||||
column: 50
|
||||
end_location:
|
||||
row: 24
|
||||
column: 53
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinVariableShadowing: sum
|
||||
location:
|
||||
row: 27
|
||||
column: 8
|
||||
end_location:
|
||||
row: 27
|
||||
column: 11
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,40 +7,62 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 11
|
||||
end_location:
|
||||
row: 1
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: type
|
||||
location:
|
||||
row: 1
|
||||
column: 19
|
||||
end_location:
|
||||
row: 1
|
||||
column: 23
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: complex
|
||||
location:
|
||||
row: 1
|
||||
column: 26
|
||||
end_location:
|
||||
row: 1
|
||||
column: 33
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: Exception
|
||||
location:
|
||||
row: 1
|
||||
column: 35
|
||||
end_location:
|
||||
row: 1
|
||||
column: 44
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: getattr
|
||||
location:
|
||||
row: 1
|
||||
column: 48
|
||||
end_location:
|
||||
row: 1
|
||||
column: 55
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: bytes
|
||||
location:
|
||||
row: 5
|
||||
column: 17
|
||||
end_location:
|
||||
row: 5
|
||||
column: 22
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinArgumentShadowing: float
|
||||
location:
|
||||
row: 9
|
||||
column: 16
|
||||
end_location:
|
||||
row: 9
|
||||
column: 21
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
source: src/linter.rs
|
||||
assertion_line: 762
|
||||
expression: checks
|
||||
---
|
||||
- kind:
|
||||
|
|
@ -8,11 +7,17 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 5
|
||||
end_location:
|
||||
row: 2
|
||||
column: 16
|
||||
fix: ~
|
||||
- kind:
|
||||
BuiltinAttributeShadowing: str
|
||||
location:
|
||||
row: 7
|
||||
column: 5
|
||||
end_location:
|
||||
row: 9
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,8 @@ expression: checks
|
|||
location:
|
||||
row: 24
|
||||
column: 1
|
||||
end_location:
|
||||
row: 24
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ expression: checks
|
|||
- 88
|
||||
location:
|
||||
row: 5
|
||||
column: 89
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 124
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,47 +7,71 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 11
|
||||
end_location:
|
||||
row: 2
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: NotEq
|
||||
location:
|
||||
row: 5
|
||||
column: 11
|
||||
end_location:
|
||||
row: 5
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: Eq
|
||||
location:
|
||||
row: 8
|
||||
column: 4
|
||||
end_location:
|
||||
row: 8
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: NotEq
|
||||
location:
|
||||
row: 11
|
||||
column: 4
|
||||
end_location:
|
||||
row: 11
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: Eq
|
||||
location:
|
||||
row: 14
|
||||
column: 14
|
||||
end_location:
|
||||
row: 14
|
||||
column: 18
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: NotEq
|
||||
location:
|
||||
row: 17
|
||||
column: 14
|
||||
end_location:
|
||||
row: 17
|
||||
column: 18
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: NotEq
|
||||
location:
|
||||
row: 20
|
||||
column: 4
|
||||
end_location:
|
||||
row: 20
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
NoneComparison: Eq
|
||||
location:
|
||||
row: 23
|
||||
column: 4
|
||||
end_location:
|
||||
row: 23
|
||||
column: 8
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 11
|
||||
end_location:
|
||||
row: 2
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -17,6 +20,9 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 11
|
||||
end_location:
|
||||
row: 5
|
||||
column: 16
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -25,6 +31,9 @@ expression: checks
|
|||
location:
|
||||
row: 8
|
||||
column: 4
|
||||
end_location:
|
||||
row: 8
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -33,6 +42,9 @@ expression: checks
|
|||
location:
|
||||
row: 11
|
||||
column: 4
|
||||
end_location:
|
||||
row: 11
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -41,6 +53,9 @@ expression: checks
|
|||
location:
|
||||
row: 14
|
||||
column: 14
|
||||
end_location:
|
||||
row: 14
|
||||
column: 18
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -49,6 +64,9 @@ expression: checks
|
|||
location:
|
||||
row: 17
|
||||
column: 14
|
||||
end_location:
|
||||
row: 17
|
||||
column: 19
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -57,6 +75,9 @@ expression: checks
|
|||
location:
|
||||
row: 20
|
||||
column: 20
|
||||
end_location:
|
||||
row: 20
|
||||
column: 24
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -65,6 +86,9 @@ expression: checks
|
|||
location:
|
||||
row: 20
|
||||
column: 44
|
||||
end_location:
|
||||
row: 20
|
||||
column: 49
|
||||
fix: ~
|
||||
- kind:
|
||||
TrueFalseComparison:
|
||||
|
|
@ -73,5 +97,8 @@ expression: checks
|
|||
location:
|
||||
row: 22
|
||||
column: 5
|
||||
end_location:
|
||||
row: 22
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,25 +6,40 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 10
|
||||
end_location:
|
||||
row: 2
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind: NotInTest
|
||||
location:
|
||||
row: 5
|
||||
column: 12
|
||||
end_location:
|
||||
row: 5
|
||||
column: 16
|
||||
fix: ~
|
||||
- kind: NotInTest
|
||||
location:
|
||||
row: 8
|
||||
column: 10
|
||||
end_location:
|
||||
row: 8
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind: NotInTest
|
||||
location:
|
||||
row: 11
|
||||
column: 25
|
||||
end_location:
|
||||
row: 11
|
||||
column: 29
|
||||
fix: ~
|
||||
- kind: NotInTest
|
||||
location:
|
||||
row: 14
|
||||
column: 11
|
||||
end_location:
|
||||
row: 14
|
||||
column: 15
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 10
|
||||
end_location:
|
||||
row: 2
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind: NotIsTest
|
||||
location:
|
||||
row: 5
|
||||
column: 12
|
||||
end_location:
|
||||
row: 5
|
||||
column: 16
|
||||
fix: ~
|
||||
- kind: NotIsTest
|
||||
location:
|
||||
row: 8
|
||||
column: 10
|
||||
end_location:
|
||||
row: 8
|
||||
column: 23
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,80 +6,128 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 14
|
||||
end_location:
|
||||
row: 2
|
||||
column: 25
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 5
|
||||
column: 14
|
||||
end_location:
|
||||
row: 5
|
||||
column: 25
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 10
|
||||
column: 8
|
||||
end_location:
|
||||
row: 10
|
||||
column: 24
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 15
|
||||
column: 14
|
||||
end_location:
|
||||
row: 15
|
||||
column: 35
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 18
|
||||
column: 18
|
||||
end_location:
|
||||
row: 18
|
||||
column: 32
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 18
|
||||
column: 46
|
||||
end_location:
|
||||
row: 18
|
||||
column: 59
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 20
|
||||
column: 18
|
||||
end_location:
|
||||
row: 20
|
||||
column: 29
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 22
|
||||
column: 18
|
||||
end_location:
|
||||
row: 22
|
||||
column: 29
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 24
|
||||
column: 18
|
||||
end_location:
|
||||
row: 24
|
||||
column: 31
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 26
|
||||
column: 18
|
||||
end_location:
|
||||
row: 26
|
||||
column: 30
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 28
|
||||
column: 18
|
||||
end_location:
|
||||
row: 28
|
||||
column: 31
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 30
|
||||
column: 18
|
||||
end_location:
|
||||
row: 30
|
||||
column: 31
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 32
|
||||
column: 18
|
||||
end_location:
|
||||
row: 32
|
||||
column: 35
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 34
|
||||
column: 18
|
||||
end_location:
|
||||
row: 38
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 40
|
||||
column: 18
|
||||
end_location:
|
||||
row: 40
|
||||
column: 29
|
||||
fix: ~
|
||||
- kind: TypeComparison
|
||||
location:
|
||||
row: 42
|
||||
column: 18
|
||||
end_location:
|
||||
row: 42
|
||||
column: 31
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 4
|
||||
column: 1
|
||||
end_location:
|
||||
row: 7
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind: DoNotUseBareExcept
|
||||
location:
|
||||
row: 11
|
||||
column: 1
|
||||
end_location:
|
||||
row: 14
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind: DoNotUseBareExcept
|
||||
location:
|
||||
row: 16
|
||||
column: 1
|
||||
end_location:
|
||||
row: 19
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,25 +6,40 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 20
|
||||
fix: ~
|
||||
- kind: DoNotAssignLambda
|
||||
location:
|
||||
row: 4
|
||||
column: 1
|
||||
end_location:
|
||||
row: 4
|
||||
column: 20
|
||||
fix: ~
|
||||
- kind: DoNotAssignLambda
|
||||
location:
|
||||
row: 7
|
||||
column: 5
|
||||
end_location:
|
||||
row: 7
|
||||
column: 30
|
||||
fix: ~
|
||||
- kind: DoNotAssignLambda
|
||||
location:
|
||||
row: 12
|
||||
column: 1
|
||||
end_location:
|
||||
row: 12
|
||||
column: 28
|
||||
fix: ~
|
||||
- kind: DoNotAssignLambda
|
||||
location:
|
||||
row: 16
|
||||
column: 1
|
||||
end_location:
|
||||
row: 16
|
||||
column: 26
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,149 +7,224 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 3
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: I
|
||||
location:
|
||||
row: 4
|
||||
column: 1
|
||||
end_location:
|
||||
row: 4
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: O
|
||||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 6
|
||||
column: 1
|
||||
end_location:
|
||||
row: 6
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 8
|
||||
column: 4
|
||||
end_location:
|
||||
row: 8
|
||||
column: 5
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 9
|
||||
column: 5
|
||||
end_location:
|
||||
row: 9
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 10
|
||||
column: 5
|
||||
end_location:
|
||||
row: 10
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 11
|
||||
column: 5
|
||||
end_location:
|
||||
row: 11
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 16
|
||||
column: 5
|
||||
end_location:
|
||||
row: 16
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 20
|
||||
column: 8
|
||||
end_location:
|
||||
row: 20
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 25
|
||||
column: 5
|
||||
end_location:
|
||||
row: 25
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 26
|
||||
column: 5
|
||||
end_location:
|
||||
row: 26
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 30
|
||||
column: 5
|
||||
end_location:
|
||||
row: 30
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 33
|
||||
column: 9
|
||||
end_location:
|
||||
row: 33
|
||||
column: 19
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 34
|
||||
column: 9
|
||||
end_location:
|
||||
row: 34
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 40
|
||||
column: 8
|
||||
end_location:
|
||||
row: 40
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: I
|
||||
location:
|
||||
row: 40
|
||||
column: 14
|
||||
end_location:
|
||||
row: 40
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 44
|
||||
column: 8
|
||||
end_location:
|
||||
row: 44
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: I
|
||||
location:
|
||||
row: 44
|
||||
column: 16
|
||||
end_location:
|
||||
row: 44
|
||||
column: 17
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 48
|
||||
column: 9
|
||||
end_location:
|
||||
row: 48
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: I
|
||||
location:
|
||||
row: 48
|
||||
column: 14
|
||||
end_location:
|
||||
row: 48
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 57
|
||||
column: 16
|
||||
end_location:
|
||||
row: 57
|
||||
column: 17
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 66
|
||||
column: 20
|
||||
end_location:
|
||||
row: 66
|
||||
column: 21
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 71
|
||||
column: 1
|
||||
end_location:
|
||||
row: 74
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousVariableName: l
|
||||
location:
|
||||
row: 74
|
||||
column: 5
|
||||
end_location:
|
||||
row: 74
|
||||
column: 11
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,17 +7,26 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousClassName: I
|
||||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 9
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousClassName: O
|
||||
location:
|
||||
row: 9
|
||||
column: 1
|
||||
end_location:
|
||||
row: 13
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,17 +7,26 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousFunctionName: I
|
||||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 9
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
AmbiguousFunctionName: O
|
||||
location:
|
||||
row: 10
|
||||
column: 5
|
||||
end_location:
|
||||
row: 14
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,17 +7,26 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 3
|
||||
column: 17
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedImport: collections.OrderedDict
|
||||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 9
|
||||
column: 2
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedImport: logging.handlers
|
||||
location:
|
||||
row: 13
|
||||
column: 1
|
||||
end_location:
|
||||
row: 13
|
||||
column: 24
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 5
|
||||
end_location:
|
||||
row: 5
|
||||
column: 7
|
||||
fix: ~
|
||||
- kind:
|
||||
ImportShadowedByLoopVar:
|
||||
|
|
@ -17,5 +20,8 @@ expression: checks
|
|||
location:
|
||||
row: 8
|
||||
column: 5
|
||||
end_location:
|
||||
row: 8
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,17 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 1
|
||||
column: 19
|
||||
fix: ~
|
||||
- kind:
|
||||
ImportStarUsed: F634
|
||||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 19
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,8 @@ expression: checks
|
|||
location:
|
||||
row: 7
|
||||
column: 1
|
||||
end_location:
|
||||
row: 7
|
||||
column: 38
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 11
|
||||
end_location:
|
||||
row: 5
|
||||
column: 15
|
||||
fix: ~
|
||||
- kind:
|
||||
ImportStarUsage:
|
||||
|
|
@ -17,5 +20,8 @@ expression: checks
|
|||
location:
|
||||
row: 11
|
||||
column: 1
|
||||
end_location:
|
||||
row: 11
|
||||
column: 8
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,17 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 5
|
||||
end_location:
|
||||
row: 5
|
||||
column: 23
|
||||
fix: ~
|
||||
- kind:
|
||||
ImportStarNotPermitted: F634
|
||||
location:
|
||||
row: 9
|
||||
column: 5
|
||||
end_location:
|
||||
row: 9
|
||||
column: 23
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 44
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 4
|
||||
column: 7
|
||||
end_location:
|
||||
row: 4
|
||||
column: 11
|
||||
fix: ~
|
||||
- kind: FStringMissingPlaceholders
|
||||
location:
|
||||
row: 5
|
||||
column: 7
|
||||
end_location:
|
||||
row: 5
|
||||
column: 11
|
||||
fix: ~
|
||||
- kind: FStringMissingPlaceholders
|
||||
location:
|
||||
row: 7
|
||||
column: 7
|
||||
end_location:
|
||||
row: 7
|
||||
column: 11
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 6
|
||||
end_location:
|
||||
row: 3
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind: MultiValueRepeatedKeyLiteral
|
||||
location:
|
||||
row: 9
|
||||
column: 5
|
||||
end_location:
|
||||
row: 9
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind: MultiValueRepeatedKeyLiteral
|
||||
location:
|
||||
row: 11
|
||||
column: 7
|
||||
end_location:
|
||||
row: 11
|
||||
column: 11
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 5
|
||||
end_location:
|
||||
row: 5
|
||||
column: 6
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,8 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 1
|
||||
column: 10
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,16 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 1
|
||||
column: 20
|
||||
fix: ~
|
||||
- kind: AssertTuple
|
||||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 16
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,16 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 6
|
||||
end_location:
|
||||
row: 1
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind: IsLiteral
|
||||
location:
|
||||
row: 4
|
||||
column: 8
|
||||
end_location:
|
||||
row: 4
|
||||
column: 16
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,8 @@ expression: checks
|
|||
location:
|
||||
row: 4
|
||||
column: 1
|
||||
end_location:
|
||||
row: 4
|
||||
column: 6
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,16 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 4
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind: IfTuple
|
||||
location:
|
||||
row: 7
|
||||
column: 5
|
||||
end_location:
|
||||
row: 9
|
||||
column: 5
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,20 +6,32 @@ expression: checks
|
|||
location:
|
||||
row: 4
|
||||
column: 5
|
||||
end_location:
|
||||
row: 4
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind: BreakOutsideLoop
|
||||
location:
|
||||
row: 16
|
||||
column: 5
|
||||
end_location:
|
||||
row: 16
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind: BreakOutsideLoop
|
||||
location:
|
||||
row: 20
|
||||
column: 5
|
||||
end_location:
|
||||
row: 20
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind: BreakOutsideLoop
|
||||
location:
|
||||
row: 23
|
||||
column: 1
|
||||
end_location:
|
||||
row: 23
|
||||
column: 6
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,20 +6,32 @@ expression: checks
|
|||
location:
|
||||
row: 4
|
||||
column: 5
|
||||
end_location:
|
||||
row: 4
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind: ContinueOutsideLoop
|
||||
location:
|
||||
row: 16
|
||||
column: 5
|
||||
end_location:
|
||||
row: 16
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind: ContinueOutsideLoop
|
||||
location:
|
||||
row: 20
|
||||
column: 5
|
||||
end_location:
|
||||
row: 20
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind: ContinueOutsideLoop
|
||||
location:
|
||||
row: 23
|
||||
column: 1
|
||||
end_location:
|
||||
row: 23
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 6
|
||||
column: 5
|
||||
end_location:
|
||||
row: 6
|
||||
column: 12
|
||||
fix: ~
|
||||
- kind: YieldOutsideFunction
|
||||
location:
|
||||
row: 9
|
||||
column: 1
|
||||
end_location:
|
||||
row: 9
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind: YieldOutsideFunction
|
||||
location:
|
||||
row: 10
|
||||
column: 1
|
||||
end_location:
|
||||
row: 10
|
||||
column: 13
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,16 @@ expression: checks
|
|||
location:
|
||||
row: 6
|
||||
column: 5
|
||||
end_location:
|
||||
row: 6
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind: ReturnOutsideFunction
|
||||
location:
|
||||
row: 9
|
||||
column: 1
|
||||
end_location:
|
||||
row: 9
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind: DefaultExceptNotLast
|
||||
location:
|
||||
row: 10
|
||||
column: 1
|
||||
end_location:
|
||||
row: 12
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind: DefaultExceptNotLast
|
||||
location:
|
||||
row: 19
|
||||
column: 1
|
||||
end_location:
|
||||
row: 21
|
||||
column: 1
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 9
|
||||
column: 13
|
||||
end_location:
|
||||
row: 9
|
||||
column: 17
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,47 +7,71 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 12
|
||||
end_location:
|
||||
row: 2
|
||||
column: 16
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: self
|
||||
location:
|
||||
row: 6
|
||||
column: 13
|
||||
end_location:
|
||||
row: 6
|
||||
column: 17
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: self
|
||||
location:
|
||||
row: 10
|
||||
column: 9
|
||||
end_location:
|
||||
row: 10
|
||||
column: 13
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: numeric_string
|
||||
location:
|
||||
row: 21
|
||||
column: 12
|
||||
end_location:
|
||||
row: 21
|
||||
column: 26
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: Bar
|
||||
location:
|
||||
row: 58
|
||||
column: 5
|
||||
end_location:
|
||||
row: 58
|
||||
column: 9
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: TOMATO
|
||||
location:
|
||||
row: 83
|
||||
column: 11
|
||||
end_location:
|
||||
row: 83
|
||||
column: 17
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: B
|
||||
location:
|
||||
row: 87
|
||||
column: 7
|
||||
end_location:
|
||||
row: 87
|
||||
column: 11
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: B
|
||||
location:
|
||||
row: 89
|
||||
column: 7
|
||||
end_location:
|
||||
row: 89
|
||||
column: 9
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 3
|
||||
column: 8
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ expression: checks
|
|||
location:
|
||||
row: 6
|
||||
column: 5
|
||||
end_location:
|
||||
row: 6
|
||||
column: 11
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 25
|
||||
end_location:
|
||||
row: 1
|
||||
column: 31
|
||||
fix: ~
|
||||
- kind: DuplicateArgumentName
|
||||
location:
|
||||
row: 5
|
||||
column: 28
|
||||
end_location:
|
||||
row: 5
|
||||
column: 34
|
||||
fix: ~
|
||||
- kind: DuplicateArgumentName
|
||||
location:
|
||||
row: 9
|
||||
column: 27
|
||||
end_location:
|
||||
row: 9
|
||||
column: 33
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,29 +7,44 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 7
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: z
|
||||
location:
|
||||
row: 16
|
||||
column: 5
|
||||
end_location:
|
||||
row: 16
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: foo
|
||||
location:
|
||||
row: 20
|
||||
column: 5
|
||||
end_location:
|
||||
row: 20
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: a
|
||||
location:
|
||||
row: 21
|
||||
column: 6
|
||||
end_location:
|
||||
row: 21
|
||||
column: 7
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: b
|
||||
location:
|
||||
row: 21
|
||||
column: 9
|
||||
end_location:
|
||||
row: 21
|
||||
column: 10
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,41 +7,62 @@ expression: checks
|
|||
location:
|
||||
row: 3
|
||||
column: 1
|
||||
end_location:
|
||||
row: 7
|
||||
column: 1
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: foo
|
||||
location:
|
||||
row: 20
|
||||
column: 5
|
||||
end_location:
|
||||
row: 20
|
||||
column: 8
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: a
|
||||
location:
|
||||
row: 21
|
||||
column: 6
|
||||
end_location:
|
||||
row: 21
|
||||
column: 7
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: b
|
||||
location:
|
||||
row: 21
|
||||
column: 9
|
||||
end_location:
|
||||
row: 21
|
||||
column: 10
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: _
|
||||
location:
|
||||
row: 35
|
||||
column: 5
|
||||
end_location:
|
||||
row: 35
|
||||
column: 6
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: __
|
||||
location:
|
||||
row: 36
|
||||
column: 5
|
||||
end_location:
|
||||
row: 36
|
||||
column: 7
|
||||
fix: ~
|
||||
- kind:
|
||||
UnusedVariable: _discarded
|
||||
location:
|
||||
row: 37
|
||||
column: 5
|
||||
end_location:
|
||||
row: 37
|
||||
column: 15
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,16 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 11
|
||||
end_location:
|
||||
row: 2
|
||||
column: 27
|
||||
fix: ~
|
||||
- kind: RaiseNotImplemented
|
||||
location:
|
||||
row: 6
|
||||
column: 11
|
||||
end_location:
|
||||
row: 6
|
||||
column: 25
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,17 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 1
|
||||
end_location:
|
||||
row: 5
|
||||
column: 30
|
||||
fix: ~
|
||||
- kind:
|
||||
UndefinedName: Bar
|
||||
location:
|
||||
row: 22
|
||||
column: 19
|
||||
end_location:
|
||||
row: 22
|
||||
column: 22
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -7,12 +7,15 @@ expression: checks
|
|||
location:
|
||||
row: 9
|
||||
column: 10
|
||||
end_location:
|
||||
row: 9
|
||||
column: 18
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 9
|
||||
column: 10
|
||||
end:
|
||||
end_location:
|
||||
row: 9
|
||||
column: 18
|
||||
applied: false
|
||||
|
|
@ -21,12 +24,15 @@ expression: checks
|
|||
location:
|
||||
row: 13
|
||||
column: 10
|
||||
end_location:
|
||||
row: 13
|
||||
column: 24
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 13
|
||||
column: 10
|
||||
end:
|
||||
end_location:
|
||||
row: 13
|
||||
column: 24
|
||||
applied: false
|
||||
|
|
@ -35,12 +41,15 @@ expression: checks
|
|||
location:
|
||||
row: 16
|
||||
column: 10
|
||||
end_location:
|
||||
row: 16
|
||||
column: 30
|
||||
fix:
|
||||
content: " # noqa: F841"
|
||||
start:
|
||||
location:
|
||||
row: 16
|
||||
column: 10
|
||||
end:
|
||||
end_location:
|
||||
row: 16
|
||||
column: 30
|
||||
applied: false
|
||||
|
|
@ -49,12 +58,15 @@ expression: checks
|
|||
location:
|
||||
row: 41
|
||||
column: 4
|
||||
end_location:
|
||||
row: 41
|
||||
column: 24
|
||||
fix:
|
||||
content: " # noqa: E501"
|
||||
start:
|
||||
location:
|
||||
row: 41
|
||||
column: 4
|
||||
end:
|
||||
end_location:
|
||||
row: 41
|
||||
column: 24
|
||||
applied: false
|
||||
|
|
@ -63,12 +75,15 @@ expression: checks
|
|||
location:
|
||||
row: 49
|
||||
column: 4
|
||||
end_location:
|
||||
row: 49
|
||||
column: 18
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 49
|
||||
column: 4
|
||||
end:
|
||||
end_location:
|
||||
row: 49
|
||||
column: 18
|
||||
applied: false
|
||||
|
|
@ -77,12 +92,15 @@ expression: checks
|
|||
location:
|
||||
row: 57
|
||||
column: 4
|
||||
end_location:
|
||||
row: 57
|
||||
column: 12
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 57
|
||||
column: 4
|
||||
end:
|
||||
end_location:
|
||||
row: 57
|
||||
column: 12
|
||||
applied: false
|
||||
|
|
|
|||
|
|
@ -7,12 +7,15 @@ expression: checks
|
|||
location:
|
||||
row: 5
|
||||
column: 9
|
||||
end_location:
|
||||
row: 5
|
||||
column: 15
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 5
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 5
|
||||
column: 16
|
||||
applied: false
|
||||
|
|
@ -21,12 +24,15 @@ expression: checks
|
|||
location:
|
||||
row: 10
|
||||
column: 5
|
||||
end_location:
|
||||
row: 10
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 9
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 11
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -35,12 +41,15 @@ expression: checks
|
|||
location:
|
||||
row: 16
|
||||
column: 5
|
||||
end_location:
|
||||
row: 16
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 15
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 18
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -49,12 +58,15 @@ expression: checks
|
|||
location:
|
||||
row: 24
|
||||
column: 5
|
||||
end_location:
|
||||
row: 24
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 22
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 25
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -63,12 +75,15 @@ expression: checks
|
|||
location:
|
||||
row: 31
|
||||
column: 5
|
||||
end_location:
|
||||
row: 31
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 29
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 32
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -77,12 +92,15 @@ expression: checks
|
|||
location:
|
||||
row: 37
|
||||
column: 5
|
||||
end_location:
|
||||
row: 37
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 36
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 39
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -91,12 +109,15 @@ expression: checks
|
|||
location:
|
||||
row: 45
|
||||
column: 5
|
||||
end_location:
|
||||
row: 45
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 43
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 47
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -105,12 +126,15 @@ expression: checks
|
|||
location:
|
||||
row: 53
|
||||
column: 5
|
||||
end_location:
|
||||
row: 53
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 51
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 55
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -119,12 +143,15 @@ expression: checks
|
|||
location:
|
||||
row: 61
|
||||
column: 5
|
||||
end_location:
|
||||
row: 61
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 59
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 63
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -133,12 +160,15 @@ expression: checks
|
|||
location:
|
||||
row: 69
|
||||
column: 5
|
||||
end_location:
|
||||
row: 69
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 67
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 71
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -147,12 +177,15 @@ expression: checks
|
|||
location:
|
||||
row: 75
|
||||
column: 12
|
||||
end_location:
|
||||
row: 75
|
||||
column: 18
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 75
|
||||
column: 10
|
||||
end:
|
||||
end_location:
|
||||
row: 75
|
||||
column: 18
|
||||
applied: false
|
||||
|
|
@ -161,12 +194,15 @@ expression: checks
|
|||
location:
|
||||
row: 79
|
||||
column: 9
|
||||
end_location:
|
||||
row: 79
|
||||
column: 15
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 79
|
||||
column: 9
|
||||
end:
|
||||
end_location:
|
||||
row: 79
|
||||
column: 17
|
||||
applied: false
|
||||
|
|
@ -175,12 +211,15 @@ expression: checks
|
|||
location:
|
||||
row: 84
|
||||
column: 5
|
||||
end_location:
|
||||
row: 84
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 84
|
||||
column: 5
|
||||
end:
|
||||
end_location:
|
||||
row: 85
|
||||
column: 5
|
||||
applied: false
|
||||
|
|
@ -189,12 +228,15 @@ expression: checks
|
|||
location:
|
||||
row: 92
|
||||
column: 5
|
||||
end_location:
|
||||
row: 92
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 91
|
||||
column: 6
|
||||
end:
|
||||
end_location:
|
||||
row: 92
|
||||
column: 11
|
||||
applied: false
|
||||
|
|
@ -203,12 +245,15 @@ expression: checks
|
|||
location:
|
||||
row: 98
|
||||
column: 5
|
||||
end_location:
|
||||
row: 98
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 98
|
||||
column: 5
|
||||
end:
|
||||
end_location:
|
||||
row: 100
|
||||
column: 5
|
||||
applied: false
|
||||
|
|
@ -217,12 +262,15 @@ expression: checks
|
|||
location:
|
||||
row: 108
|
||||
column: 5
|
||||
end_location:
|
||||
row: 108
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 107
|
||||
column: 6
|
||||
end:
|
||||
end_location:
|
||||
row: 108
|
||||
column: 11
|
||||
applied: false
|
||||
|
|
@ -231,12 +279,15 @@ expression: checks
|
|||
location:
|
||||
row: 114
|
||||
column: 13
|
||||
end_location:
|
||||
row: 114
|
||||
column: 19
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 114
|
||||
column: 12
|
||||
end:
|
||||
end_location:
|
||||
row: 114
|
||||
column: 20
|
||||
applied: false
|
||||
|
|
@ -245,12 +296,15 @@ expression: checks
|
|||
location:
|
||||
row: 119
|
||||
column: 5
|
||||
end_location:
|
||||
row: 119
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 118
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 120
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -259,12 +313,15 @@ expression: checks
|
|||
location:
|
||||
row: 125
|
||||
column: 5
|
||||
end_location:
|
||||
row: 125
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 124
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 126
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
@ -273,12 +330,15 @@ expression: checks
|
|||
location:
|
||||
row: 131
|
||||
column: 5
|
||||
end_location:
|
||||
row: 131
|
||||
column: 11
|
||||
fix:
|
||||
content: ""
|
||||
start:
|
||||
location:
|
||||
row: 130
|
||||
column: 8
|
||||
end:
|
||||
end_location:
|
||||
row: 133
|
||||
column: 2
|
||||
applied: false
|
||||
|
|
|
|||
|
|
@ -6,12 +6,15 @@ expression: checks
|
|||
location:
|
||||
row: 1
|
||||
column: 1
|
||||
end_location:
|
||||
row: 1
|
||||
column: 18
|
||||
fix:
|
||||
content: assertEqual
|
||||
start:
|
||||
location:
|
||||
row: 1
|
||||
column: 2
|
||||
end:
|
||||
end_location:
|
||||
row: 1
|
||||
column: 14
|
||||
applied: false
|
||||
|
|
@ -19,12 +22,15 @@ expression: checks
|
|||
location:
|
||||
row: 2
|
||||
column: 1
|
||||
end_location:
|
||||
row: 2
|
||||
column: 18
|
||||
fix:
|
||||
content: assertEqual
|
||||
start:
|
||||
location:
|
||||
row: 2
|
||||
column: 2
|
||||
end:
|
||||
end_location:
|
||||
row: 2
|
||||
column: 14
|
||||
applied: false
|
||||
|
|
|
|||
|
|
@ -6,14 +6,24 @@ expression: checks
|
|||
location:
|
||||
row: 17
|
||||
column: 18
|
||||
end_location:
|
||||
row: 17
|
||||
column: 23
|
||||
fix: ~
|
||||
- kind: SuperCallWithParameters
|
||||
location:
|
||||
row: 18
|
||||
column: 9
|
||||
end_location:
|
||||
row: 18
|
||||
column: 14
|
||||
fix: ~
|
||||
- kind: SuperCallWithParameters
|
||||
location:
|
||||
row: 19
|
||||
column: 9
|
||||
end_location:
|
||||
row: 19
|
||||
column: 14
|
||||
fix: ~
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue