summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <cpopa@cloudbasesolutions.com>2015-01-02 11:08:27 +0200
committerClaudiu Popa <cpopa@cloudbasesolutions.com>2015-01-02 11:08:27 +0200
commitb06c7f50b49ca755e26c6a6dcbe0b2fb30f6ffe2 (patch)
tree8fa815b3a87968145e44299e54f9f0eaf580662e
parentd2fb3f8441a1073ababca3649c706627f2f09b75 (diff)
downloadpylint-b06c7f50b49ca755e26c6a6dcbe0b2fb30f6ffe2.tar.gz
Small refactoring to exceptions checker.
-rw-r--r--checkers/exceptions.py37
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)