Add autofix for W605 [InvalidEscapeSequence] (#1361)

This commit is contained in:
Sawbez 2022-12-24 10:46:28 -08:00 committed by GitHub
parent 63772e335d
commit 0dc523b081
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 78 additions and 12 deletions

View File

@ -541,7 +541,7 @@ For more, see [pycodestyle](https://pypi.org/project/pycodestyle/2.9.1/) on PyPI
| E902 | IOError | IOError: `...` | | | E902 | IOError | IOError: `...` | |
| E999 | SyntaxError | SyntaxError: `...` | | | E999 | SyntaxError | SyntaxError: `...` | |
| W292 | NoNewLineAtEndOfFile | No newline at end of file | 🛠 | | W292 | NoNewLineAtEndOfFile | No newline at end of file | 🛠 |
| W605 | InvalidEscapeSequence | Invalid escape sequence: '\c' | | | W605 | InvalidEscapeSequence | Invalid escape sequence: '\c' | 🛠 |
### mccabe (C90) ### mccabe (C90)

View File

@ -89,7 +89,11 @@ pub fn check_tokens(
if enforce_invalid_escape_sequence { if enforce_invalid_escape_sequence {
if matches!(tok, Tok::String { .. }) { if matches!(tok, Tok::String { .. }) {
checks.extend(pycodestyle::checks::invalid_escape_sequence( checks.extend(pycodestyle::checks::invalid_escape_sequence(
locator, start, end, locator,
start,
end,
matches!(autofix, flags::Autofix::Enabled)
&& settings.fixable.contains(&CheckCode::W605),
)); ));
} }
} }

View File

@ -2972,6 +2972,7 @@ impl CheckKind {
| CheckKind::GetAttrWithConstant | CheckKind::GetAttrWithConstant
| CheckKind::ImplicitReturn | CheckKind::ImplicitReturn
| CheckKind::ImplicitReturnValue | CheckKind::ImplicitReturnValue
| CheckKind::InvalidEscapeSequence(..)
| CheckKind::IsLiteral | CheckKind::IsLiteral
| CheckKind::KeyInDict(..) | CheckKind::KeyInDict(..)
| CheckKind::MisplacedComparisonConstant(..) | CheckKind::MisplacedComparisonConstant(..)

View File

@ -188,6 +188,7 @@ pub fn invalid_escape_sequence(
locator: &SourceCodeLocator, locator: &SourceCodeLocator,
start: Location, start: Location,
end: Location, end: Location,
autofix: bool,
) -> Vec<Check> { ) -> Vec<Check> {
let mut checks = vec![]; let mut checks = vec![];
@ -235,13 +236,17 @@ pub fn invalid_escape_sequence(
}; };
let location = Location::new(start.row() + row_offset, col); let location = Location::new(start.row() + row_offset, col);
let end_location = Location::new(location.row(), location.column() + 2); let end_location = Location::new(location.row(), location.column() + 2);
checks.push(Check::new( let mut check = Check::new(
CheckKind::InvalidEscapeSequence(next_char), CheckKind::InvalidEscapeSequence(next_char),
Range { Range {
location, location,
end_location, end_location,
}, },
)); );
if autofix {
check.amend(Fix::insertion(r"\".to_string(), location));
}
checks.push(check);
} }
} }
} }

View File

@ -10,7 +10,14 @@ expression: checks
end_location: end_location:
row: 2 row: 2
column: 11 column: 11
fix: ~ fix:
content: "\\"
location:
row: 2
column: 9
end_location:
row: 2
column: 9
- kind: - kind:
InvalidEscapeSequence: "." InvalidEscapeSequence: "."
location: location:
@ -19,7 +26,14 @@ expression: checks
end_location: end_location:
row: 6 row: 6
column: 2 column: 2
fix: ~ fix:
content: "\\"
location:
row: 6
column: 0
end_location:
row: 6
column: 0
- kind: - kind:
InvalidEscapeSequence: _ InvalidEscapeSequence: _
location: location:
@ -28,7 +42,14 @@ expression: checks
end_location: end_location:
row: 11 row: 11
column: 7 column: 7
fix: ~ fix:
content: "\\"
location:
row: 11
column: 5
end_location:
row: 11
column: 5
- kind: - kind:
InvalidEscapeSequence: _ InvalidEscapeSequence: _
location: location:
@ -37,5 +58,12 @@ expression: checks
end_location: end_location:
row: 18 row: 18
column: 7 column: 7
fix: ~ fix:
content: "\\"
location:
row: 18
column: 5
end_location:
row: 18
column: 5

View File

@ -10,7 +10,14 @@ expression: checks
end_location: end_location:
row: 2 row: 2
column: 11 column: 11
fix: ~ fix:
content: "\\"
location:
row: 2
column: 9
end_location:
row: 2
column: 9
- kind: - kind:
InvalidEscapeSequence: "." InvalidEscapeSequence: "."
location: location:
@ -19,7 +26,14 @@ expression: checks
end_location: end_location:
row: 6 row: 6
column: 2 column: 2
fix: ~ fix:
content: "\\"
location:
row: 6
column: 0
end_location:
row: 6
column: 0
- kind: - kind:
InvalidEscapeSequence: _ InvalidEscapeSequence: _
location: location:
@ -28,7 +42,14 @@ expression: checks
end_location: end_location:
row: 11 row: 11
column: 7 column: 7
fix: ~ fix:
content: "\\"
location:
row: 11
column: 5
end_location:
row: 11
column: 5
- kind: - kind:
InvalidEscapeSequence: _ InvalidEscapeSequence: _
location: location:
@ -37,5 +58,12 @@ expression: checks
end_location: end_location:
row: 18 row: 18
column: 7 column: 7
fix: ~ fix:
content: "\\"
location:
row: 18
column: 5
end_location:
row: 18
column: 5