summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Marek <shlomme@gmail.com>2014-04-16 22:36:13 +0200
committerTorsten Marek <shlomme@gmail.com>2014-04-16 22:36:13 +0200
commit0ae519c58aca5d2ffb2dca86c070407a66e413f0 (patch)
tree6f9ddf0e08d8cf8cc6896d1fb16d8a2656656cda
parent9ddebe38ecdeaecf435596f6dac22f9ca6c3e3c9 (diff)
downloadpylint-0ae519c58aca5d2ffb2dca86c070407a66e413f0.tar.gz
Only emit symblic warnings from the variables checker.
-rw-r--r--checkers/variables.py61
1 files changed, 32 insertions, 29 deletions
diff --git a/checkers/variables.py b/checkers/variables.py
index 73fdcc0..d74cb56 100644
--- a/checkers/variables.py
+++ b/checkers/variables.py
@@ -192,9 +192,9 @@ builtins. Remember that you should avoid to define new builtins when possible.'
for name, stmts in node.locals.iteritems():
if is_builtin(name) and not is_inside_except(stmts[0]):
# do not print Redefining builtin for additional builtins
- self.add_message('W0622', args=name, node=stmts[0])
+ self.add_message('redefined-builtin', args=name, node=stmts[0])
- @check_messages('W0611', 'W0614', 'W0622', 'E0603', 'E0604')
+ @check_messages('unused-import', 'unused-wildcard-import', 'redefined-builtin', 'undefined-all-variable', 'invalid-all-object')
def leave_module(self, node):
"""leave module: check globals
"""
@@ -212,7 +212,7 @@ builtins. Remember that you should avoid to define new builtins when possible.'
if not isinstance(elt_name, astroid.Const) \
or not isinstance(elt_name.value, basestring):
- self.add_message('E0604', args=elt.as_string(), node=elt)
+ self.add_message('invalid-all-object', args=elt.as_string(), node=elt)
continue
elt_name = elt_name.value
# If elt is in not_consumed, remove it from not_consumed
@@ -249,12 +249,12 @@ builtins. Remember that you should avoid to define new builtins when possible.'
continue
stmt = stmts[0]
if isinstance(stmt, astroid.Import):
- self.add_message('W0611', args=name, node=stmt)
+ self.add_message('unused-import', args=name, node=stmt)
elif isinstance(stmt, astroid.From) and stmt.modname != '__future__':
if stmt.names[0][0] == '*':
- self.add_message('W0614', args=name, node=stmt)
+ self.add_message('unused-wildcard-import', args=name, node=stmt)
else:
- self.add_message('W0611', args=name, node=stmt)
+ self.add_message('unused-import', args=name, node=stmt)
del self._to_consume
def visit_class(self, node):
@@ -316,7 +316,8 @@ builtins. Remember that you should avoid to define new builtins when possible.'
"""visit function: update consumption analysis variable and check locals
"""
self._to_consume.append((copy(node.locals), {}, 'function'))
- if not set(('W0621', 'W0622')) & self.active_msgs:
+ if not (self.linter.is_message_enabled('redefined-outer-name') or
+ self.linter.is_message_enabled('redefined-builtin')):
return
globs = node.root().globals
for name, stmt in node.items():
@@ -326,15 +327,16 @@ builtins. Remember that you should avoid to define new builtins when possible.'
line = globs[name][0].fromlineno
dummy_rgx = self.config.dummy_variables_rgx
if not dummy_rgx.match(name):
- self.add_message('W0621', args=(name, line), node=stmt)
+ self.add_message('redefined-outer-name', args=(name, line), node=stmt)
elif is_builtin(name):
# do not print Redefining builtin for additional builtins
- self.add_message('W0622', args=name, node=stmt)
+ self.add_message('redefined-builtin', args=name, node=stmt)
def leave_function(self, node):
"""leave function: check function's locals are consumed"""
not_consumed = self._to_consume.pop()[0]
- if not set(('W0612', 'W0613')) & self.active_msgs:
+ if not (self.linter.is_message_enabled('unused-variable') or
+ self.linter.is_message_enabled('unused-argument')):
return
# don't check arguments of function which are only raising an exception
if is_error(node):
@@ -373,16 +375,17 @@ builtins. Remember that you should avoid to define new builtins when possible.'
# don't check callback arguments XXX should be configurable
if node.name.startswith('cb_') or node.name.endswith('_cb'):
continue
- self.add_message('W0613', args=name, node=stmt)
+ self.add_message('unused-argument', args=name, node=stmt)
else:
- self.add_message('W0612', args=name, node=stmt)
+ self.add_message('unused-variable', args=name, node=stmt)
- @check_messages('W0601', 'W0602', 'W0603', 'W0604', 'W0622')
+ @check_messages('global-variable-undefined', 'global-variable-not-assigned', 'global-statement',
+ 'global-at-module-level', 'redefined-builtin')
def visit_global(self, node):
"""check names imported exists in the global scope"""
frame = node.frame()
if isinstance(frame, astroid.Module):
- self.add_message('W0604', node=node)
+ self.add_message('global-at-module-level', node=node)
return
module = frame.root()
default_message = True
@@ -402,23 +405,23 @@ builtins. Remember that you should avoid to define new builtins when possible.'
break
else:
# global but no assignment
- self.add_message('W0602', args=name, node=node)
+ self.add_message('global-variable-not-assigned', args=name, node=node)
default_message = False
if not assign_nodes:
continue
for anode in assign_nodes:
if anode.parent is None:
- self.add_message('W0622', args=name, node=node)
+ self.add_message('redefined-builtin', args=name, node=node)
break
if anode.frame() is module:
# module level assignment
break
else:
# global undefined at the module scope
- self.add_message('W0601', args=name, node=node)
+ self.add_message('global-variable-undefined', args=name, node=node)
default_message = False
if default_message:
- self.add_message('W0603', node=node)
+ self.add_message('global-statement', node=node)
def _loopvar_name(self, node, name):
# filter variables according to node's scope
@@ -428,7 +431,7 @@ builtins. Remember that you should avoid to define new builtins when possible.'
#astmts = [stmt for stmt in node.lookup(name)[1]
# if hasattr(stmt, 'ass_type')] and
# not stmt.statement().parent_of(node)]
- if 'W0631' not in self.active_msgs:
+ if not self.linter.is_message_enabled('undefined-loop-variable'):
return
astmts = [stmt for stmt in node.lookup(name)[1]
if hasattr(stmt, 'ass_type')]
@@ -454,14 +457,14 @@ builtins. Remember that you should avoid to define new builtins when possible.'
ass = astmts[0].ass_type()
if isinstance(ass, (astroid.For, astroid.Comprehension, astroid.GenExpr)) \
and not ass.statement() is node.statement():
- self.add_message('W0631', args=name, node=node)
+ self.add_message('undefined-loop-variable', args=name, node=node)
- @check_messages('W0623')
+ @check_messages('redefine-in-handler')
def visit_excepthandler(self, node):
for name in get_all_elements(node.name):
clobbering, args = clobber_in_except(name)
if clobbering:
- self.add_message('W0623', args=args, node=name)
+ self.add_message('redefine-in-handler', args=args, node=name)
def visit_assname(self, node):
if isinstance(node.ass_type(), astroid.AugAssign):
@@ -544,10 +547,10 @@ builtins. Remember that you should avoid to define new builtins when possible.'
and not are_exclusive(stmt, defstmt, ('NameError', 'Exception', 'BaseException'))):
if defstmt is stmt and isinstance(node, (astroid.DelName,
astroid.AssName)):
- self.add_message('E0602', args=name, node=node)
+ self.add_message('undefined-variable', args=name, node=node)
elif self._to_consume[-1][-1] != 'lambda':
# E0601 may *not* occurs in lambda scope
- self.add_message('E0601', args=name, node=node)
+ self.add_message('used-before-assignment', args=name, node=node)
if isinstance(node, astroid.AssName): # Aug AssName
del consumed[name]
else:
@@ -560,9 +563,9 @@ builtins. Remember that you should avoid to define new builtins when possible.'
# undefined name !
if not (name in astroid.Module.scope_attrs or is_builtin(name)
or name in self.config.additional_builtins):
- self.add_message('E0602', args=name, node=node)
+ self.add_message('undefined-variable', args=name, node=node)
- @check_messages('E0611')
+ @check_messages('no-name-in-module')
def visit_import(self, node):
"""check modules attribute accesses"""
for name, _ in node.names:
@@ -573,7 +576,7 @@ builtins. Remember that you should avoid to define new builtins when possible.'
continue
self._check_module_attrs(node, module, parts[1:])
- @check_messages('E0611')
+ @check_messages('no-name-in-module')
def visit_from(self, node):
"""check modules attribute accesses"""
name_parts = node.modname.split('.')
@@ -658,7 +661,7 @@ builtins. Remember that you should avoid to define new builtins when possible.'
if module is astroid.YES:
return None
except astroid.NotFoundError:
- self.add_message('E0611', args=(name, module.name), node=node)
+ self.add_message('no-name-in-module', args=(name, module.name), node=node)
return None
except astroid.InferenceError:
return None
@@ -666,7 +669,7 @@ builtins. Remember that you should avoid to define new builtins when possible.'
# FIXME: other message if name is not the latest part of
# module_names ?
modname = module and module.name or '__dict__'
- self.add_message('E0611', node=node,
+ self.add_message('no-name-in-module', node=node,
args=('.'.join(module_names), modname))
return None
if isinstance(module, astroid.Module):