diff options
author | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-01-02 11:08:27 +0200 |
---|---|---|
committer | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-01-02 11:08:27 +0200 |
commit | b06c7f50b49ca755e26c6a6dcbe0b2fb30f6ffe2 (patch) | |
tree | 8fa815b3a87968145e44299e54f9f0eaf580662e | |
parent | d2fb3f8441a1073ababca3649c706627f2f09b75 (diff) | |
download | pylint-b06c7f50b49ca755e26c6a6dcbe0b2fb30f6ffe2.tar.gz |
Small refactoring to exceptions checker.
-rw-r--r-- | checkers/exceptions.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/checkers/exceptions.py b/checkers/exceptions.py index c9b6eb1..0f58a68 100644 --- a/checkers/exceptions.py +++ b/checkers/exceptions.py @@ -16,18 +16,22 @@ """ import sys -from logilab.common.compat import builtins -BUILTINS_NAME = builtins.__name__ import astroid from astroid import YES, Instance, unpack_infer, List, Tuple +from logilab.common.compat import builtins from pylint.checkers import BaseChecker from pylint.checkers.utils import ( - is_empty, is_raising, - check_messages, inherit_from_std_ex, - EXCEPTIONS_MODULE, has_known_bases, safe_infer) + is_empty, + is_raising, + check_messages, + inherit_from_std_ex, + EXCEPTIONS_MODULE, + has_known_bases, + safe_infer) from pylint.interfaces import IAstroidChecker, INFERENCE, INFERENCE_FAILURE + def _annotated_unpack_infer(stmt, context=None): """ Recursively generate nodes inferred by the given statement. @@ -54,7 +58,7 @@ def _annotated_unpack_infer(stmt, context=None): PY3K = sys.version_info >= (3, 0) OVERGENERAL_EXCEPTIONS = ('Exception',) - +BUILTINS_NAME = builtins.__name__ MSGS = { 'E0701': ('Bad except clauses order (%s)', 'bad-except-order', @@ -171,11 +175,13 @@ class ExceptionsChecker(BaseChecker): else: self.add_message('raising-bad-type', node=node, args=value.__class__.__name__) - elif (isinstance(expr, astroid.Name) and \ - expr.name in ('None', 'True', 'False')) or \ - isinstance(expr, (astroid.List, astroid.Dict, astroid.Tuple, - astroid.Module, astroid.Function)): - self.add_message('raising-bad-type', node=node, args=expr.name) + elif ((isinstance(expr, astroid.Name) and + expr.name in ('None', 'True', 'False')) or + isinstance(expr, (astroid.List, astroid.Dict, astroid.Tuple, + astroid.Module, astroid.Function))): + self.add_message('raising-bad-type', + node=node, + args=expr.name) elif ((isinstance(expr, astroid.Name) and expr.name == 'NotImplemented') or (isinstance(expr, astroid.CallFunc) and isinstance(expr.func, astroid.Name) and @@ -190,9 +196,13 @@ class ExceptionsChecker(BaseChecker): if expr.newstyle: self.add_message('raising-non-exception', node=node) else: + if has_known_bases(expr): + confidence = INFERENCE + else: + confidence = INFERENCE_FAILURE self.add_message( 'nonstandard-exception', node=node, - confidence=INFERENCE if has_known_bases(expr) else INFERENCE_FAILURE) + confidence=confidence) else: value_found = False else: @@ -271,7 +281,8 @@ class ExceptionsChecker(BaseChecker): for part, exc in excs: if exc is YES: continue - if isinstance(exc, astroid.Instance) and inherit_from_std_ex(exc): + if (isinstance(exc, astroid.Instance) + and inherit_from_std_ex(exc)): exc = exc._proxied self._check_catching_non_exception(handler, exc, part) |