diff options
author | Robert Schweizer <robert_schweizer@gmx.de> | 2019-08-15 12:53:20 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-09-10 10:50:08 +0200 |
commit | fb81d1ade4f0c87039c828f9aed94469691d825d (patch) | |
tree | a1446556a10fbdcdb3df1af50139faab64b6707c /pylint/checkers/refactoring.py | |
parent | ca54a1a87f6382c68287ebc1996312ceb921f16c (diff) | |
download | pylint-git-fb81d1ade4f0c87039c828f9aed94469691d825d.tar.gz |
Report unnecessary else after continue and break
Close #2327
Diffstat (limited to 'pylint/checkers/refactoring.py')
-rw-r--r-- | pylint/checkers/refactoring.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/pylint/checkers/refactoring.py b/pylint/checkers/refactoring.py index 98dd80827..05fef1f11 100644 --- a/pylint/checkers/refactoring.py +++ b/pylint/checkers/refactoring.py @@ -278,6 +278,24 @@ class RefactoringChecker(checkers.BaseTokenChecker): "consider-using-sys-exit", "Instead of using exit() or quit(), consider using the sys.exit().", ), + "R1723": ( + 'Unnecessary "%s" after "break"', + "no-else-break", + "Used in order to highlight an unnecessary block of " + "code following an if containing a break statement. " + "As such, it will warn when it encounters an else " + "following a chain of ifs, all of them containing a " + "break statement.", + ), + "R1724": ( + 'Unnecessary "%s" after "continue"', + "no-else-continue", + "Used in order to highlight an unnecessary block of " + "code following an if containing a continue statement. " + "As such, it will warn when it encounters an else " + "following a chain of ifs, all of them containing a " + "continue statement.", + ), } options = ( ( @@ -510,6 +528,16 @@ class RefactoringChecker(checkers.BaseTokenChecker): node, msg_id="no-else-raise", returning_node_class=astroid.Raise ) + def _check_superfluous_else_break(self, node): + return self._check_superfluous_else( + node, msg_id="no-else-break", returning_node_class=astroid.Break + ) + + def _check_superfluous_else_continue(self, node): + return self._check_superfluous_else( + node, msg_id="no-else-continue", returning_node_class=astroid.Continue + ) + def _check_consider_get(self, node): def type_and_name_are_equal(node_a, node_b): for _type in [astroid.Name, astroid.AssignName]: @@ -550,6 +578,8 @@ class RefactoringChecker(checkers.BaseTokenChecker): "simplifiable-if-statement", "no-else-return", "no-else-raise", + "no-else-break", + "no-else-continue", "consider-using-get", ) def visit_if(self, node): @@ -557,6 +587,8 @@ class RefactoringChecker(checkers.BaseTokenChecker): self._check_nested_blocks(node) self._check_superfluous_else_return(node) self._check_superfluous_else_raise(node) + self._check_superfluous_else_break(node) + self._check_superfluous_else_continue(node) self._check_consider_get(node) @utils.check_messages("simplifiable-if-expression") |