diff options
| author | Claudiu Popa <pcmanticore@gmail.com> | 2015-01-04 00:14:38 +0200 |
|---|---|---|
| committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-01-04 00:14:38 +0200 |
| commit | e118080de3cc49762c8ab67fa6f73b0a2259cc57 (patch) | |
| tree | 8009a859e9906e68dc0478fd2c4f0764b9784428 /checkers/stdlib.py | |
| parent | b23ba67c3567206beb02e6eef5337f52cf716849 (diff) | |
| parent | 1198872bef0b9de1b8d26d340fb18797317a05e8 (diff) | |
| download | pylint-git-e118080de3cc49762c8ab67fa6f73b0a2259cc57.tar.gz | |
Merged in vtemian/pylint/redundant-assert (pull request #202)
Added check for redundant assert #ropython-sprints
Diffstat (limited to 'checkers/stdlib.py')
| -rw-r--r-- | checkers/stdlib.py | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/checkers/stdlib.py b/checkers/stdlib.py index fadb58678..8f1965eaf 100644 --- a/checkers/stdlib.py +++ b/checkers/stdlib.py @@ -93,16 +93,26 @@ class StdlibChecker(BaseChecker): 'midnight UTC. This behaviour was fixed in Python 3.5. ' 'See http://bugs.python.org/issue13936 for reference.', {'maxversion': (3, 5)}), - } - - @utils.check_messages('bad-open-mode') + 'W1503': ('Redundant use of assertTrue or assertFalse with constant ' + 'value %r', + 'redundant-unittest-assert', + 'The first argument of assertTrue and assertFalse is' + 'a condition. If a constant is passed as parameter, that' + 'condition will be always true. In this case a warning ' + 'should be emited.') + } + + @utils.check_messages('bad-open-mode', 'redundant-unittest-assert') def visit_callfunc(self, node): """Visit a CallFunc node.""" if hasattr(node, 'func'): infer = utils.safe_infer(node.func) - if infer and infer.root().name == OPEN_MODULE: - if getattr(node.func, 'name', None) in ('open', 'file'): - self._check_open_mode(node) + if infer: + if infer.root().name == OPEN_MODULE: + if getattr(node.func, 'name', None) in ('open', 'file'): + self._check_open_mode(node) + if infer.root().name == 'unittest.case': + self._check_redundant_assert(node, infer) @utils.check_messages('boolean-datetime') def visit_unaryop(self, node): @@ -122,6 +132,14 @@ class StdlibChecker(BaseChecker): for value in node.values: self._check_datetime(value) + def _check_redundant_assert(self, node, infer): + if (isinstance(infer, astroid.BoundMethod) and + isinstance(node.args[0], astroid.Const) and + infer.name in ['assertTrue', 'assertFalse']): + self.add_message('redundant-unittest-assert', + args=(node.args[0].value, ), + node=node) + def _check_datetime(self, node): """ Check that a datetime was infered. If so, emit boolean-datetime warning. |
