mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 12:55:05 +00:00
Use function range for no-self-use
(#8637)
Previously, this rule used the range of the `self` annotation, but it's a lot more natural to use the range of the function name (since it also means the `# noqa` is associated with the method rather than its first argument). Closes https://github.com/astral-sh/ruff/issues/8635.
This commit is contained in:
parent
70f491d31e
commit
cbd9157bbf
2 changed files with 14 additions and 13 deletions
|
@ -1,12 +1,12 @@
|
|||
use ruff_diagnostics::{Diagnostic, Violation};
|
||||
use ruff_macros::{derive_message_formats, violation};
|
||||
use ruff_python_ast::call_path::{from_qualified_name, CallPath};
|
||||
use ruff_python_ast::identifier::Identifier;
|
||||
use ruff_python_ast::{self as ast, ParameterWithDefault};
|
||||
use ruff_python_semantic::{
|
||||
analyze::{function_type, visibility},
|
||||
Scope, ScopeId, ScopeKind,
|
||||
};
|
||||
use ruff_text_size::Ranged;
|
||||
|
||||
use crate::{checkers::ast::Checker, rules::flake8_unused_arguments::helpers};
|
||||
|
||||
|
@ -53,16 +53,17 @@ pub(crate) fn no_self_use(
|
|||
return;
|
||||
};
|
||||
|
||||
let ScopeKind::Function(ast::StmtFunctionDef {
|
||||
let ScopeKind::Function(func) = scope.kind else {
|
||||
return;
|
||||
};
|
||||
|
||||
let ast::StmtFunctionDef {
|
||||
name,
|
||||
parameters,
|
||||
body,
|
||||
decorator_list,
|
||||
..
|
||||
}) = scope.kind
|
||||
else {
|
||||
return;
|
||||
};
|
||||
} = func;
|
||||
|
||||
if !matches!(
|
||||
function_type::classify(
|
||||
|
@ -135,7 +136,7 @@ pub(crate) fn no_self_use(
|
|||
NoSelfUse {
|
||||
method_name: name.to_string(),
|
||||
},
|
||||
parameter.range(),
|
||||
func.identifier(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||
---
|
||||
no_self_use.py:7:28: PLR6301 Method `developer_greeting` could be a function, class method, or static method
|
||||
no_self_use.py:7:9: PLR6301 Method `developer_greeting` could be a function, class method, or static method
|
||||
|
|
||||
6 | class Person:
|
||||
7 | def developer_greeting(self, name): # [no-self-use]
|
||||
| ^^^^ PLR6301
|
||||
| ^^^^^^^^^^^^^^^^^^ PLR6301
|
||||
8 | print(f"Greetings {name}!")
|
||||
|
|
||||
|
||||
no_self_use.py:10:20: PLR6301 Method `greeting_1` could be a function, class method, or static method
|
||||
no_self_use.py:10:9: PLR6301 Method `greeting_1` could be a function, class method, or static method
|
||||
|
|
||||
8 | print(f"Greetings {name}!")
|
||||
9 |
|
||||
10 | def greeting_1(self): # [no-self-use]
|
||||
| ^^^^ PLR6301
|
||||
| ^^^^^^^^^^ PLR6301
|
||||
11 | print("Hello!")
|
||||
|
|
||||
|
||||
no_self_use.py:13:20: PLR6301 Method `greeting_2` could be a function, class method, or static method
|
||||
no_self_use.py:13:9: PLR6301 Method `greeting_2` could be a function, class method, or static method
|
||||
|
|
||||
11 | print("Hello!")
|
||||
12 |
|
||||
13 | def greeting_2(self): # [no-self-use]
|
||||
| ^^^^ PLR6301
|
||||
| ^^^^^^^^^^ PLR6301
|
||||
14 | print("Hi!")
|
||||
|
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue