mirror of https://github.com/astral-sh/ruff
Add autofix for PYI009 (#4583)
This commit is contained in:
parent
b613460fe5
commit
5ba47c3302
|
|
@ -1,18 +1,23 @@
|
|||
use rustpython_parser::ast::{Ranged, Stmt};
|
||||
|
||||
use ruff_diagnostics::{Diagnostic, Violation};
|
||||
use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix};
|
||||
use ruff_macros::{derive_message_formats, violation};
|
||||
|
||||
use crate::checkers::ast::Checker;
|
||||
use crate::registry::Rule;
|
||||
|
||||
#[violation]
|
||||
pub struct PassStatementStubBody;
|
||||
|
||||
impl Violation for PassStatementStubBody {
|
||||
impl AlwaysAutofixableViolation for PassStatementStubBody {
|
||||
#[derive_message_formats]
|
||||
fn message(&self) -> String {
|
||||
format!("Empty body should contain `...`, not `pass`")
|
||||
}
|
||||
|
||||
fn autofix_title(&self) -> String {
|
||||
format!("Replace `pass` with `...`")
|
||||
}
|
||||
}
|
||||
|
||||
/// PYI009
|
||||
|
|
@ -21,8 +26,13 @@ pub(crate) fn pass_statement_stub_body(checker: &mut Checker, body: &[Stmt]) {
|
|||
return;
|
||||
}
|
||||
if body[0].is_pass_stmt() {
|
||||
checker
|
||||
.diagnostics
|
||||
.push(Diagnostic::new(PassStatementStubBody, body[0].range()));
|
||||
let mut diagnostic = Diagnostic::new(PassStatementStubBody, body[0].range());
|
||||
if checker.patch(Rule::PassStatementStubBody) {
|
||||
diagnostic.set_fix(Fix::automatic(Edit::range_replacement(
|
||||
format!("..."),
|
||||
body[0].range(),
|
||||
)));
|
||||
};
|
||||
checker.diagnostics.push(diagnostic);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
source: crates/ruff/src/rules/flake8_pyi/mod.rs
|
||||
---
|
||||
PYI009.pyi:3:5: PYI009 Empty body should contain `...`, not `pass`
|
||||
PYI009.pyi:3:5: PYI009 [*] Empty body should contain `...`, not `pass`
|
||||
|
|
||||
3 | def bar(): ... # OK
|
||||
4 | def foo():
|
||||
|
|
@ -10,12 +10,30 @@ PYI009.pyi:3:5: PYI009 Empty body should contain `...`, not `pass`
|
|||
6 |
|
||||
7 | class Bar: ... # OK
|
||||
|
|
||||
= help: Replace `pass` with `...`
|
||||
|
||||
PYI009.pyi:8:5: PYI009 Empty body should contain `...`, not `pass`
|
||||
ℹ Fix
|
||||
1 1 | def bar(): ... # OK
|
||||
2 2 | def foo():
|
||||
3 |- pass # ERROR PYI009, since we're in a stub file
|
||||
3 |+ ... # ERROR PYI009, since we're in a stub file
|
||||
4 4 |
|
||||
5 5 | class Bar: ... # OK
|
||||
6 6 |
|
||||
|
||||
PYI009.pyi:8:5: PYI009 [*] Empty body should contain `...`, not `pass`
|
||||
|
|
||||
8 | class Foo:
|
||||
9 | pass # ERROR PYI009, since we're in a stub file
|
||||
| ^^^^ PYI009
|
||||
|
|
||||
= help: Replace `pass` with `...`
|
||||
|
||||
ℹ Fix
|
||||
5 5 | class Bar: ... # OK
|
||||
6 6 |
|
||||
7 7 | class Foo:
|
||||
8 |- pass # ERROR PYI009, since we're in a stub file
|
||||
8 |+ ... # ERROR PYI009, since we're in a stub file
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue