Beispiel #1
0
 def unknown_globals(self, scope):
     # collect scope's global use locations
     global_nodes = defaultdict(list)  # {assembled: [node]}
     for id_, scopeVar in scope.globals().items():
         for head_node in scopeVar.uses:
             var_top = treeutil.findVarRoot(head_node)
             full_name = (treeutil.assembleVariable(var_top))[0]
             global_nodes[full_name].append(head_node)
     # filter allowed globals
     # - from config
     global_nodes = dict([(key,nodes) for (key,nodes) in global_nodes.items()
         if key not in self.opts.allowed_globals])
     # - from known classes and namespaces
     global_nodes = dict([(key,nodes) for (key,nodes) in global_nodes.items()
         if not extension_match_in(key, self.known_globals_bases,self.opts.class_namespaces)]) # known classes (classList + their namespaces)
     # - from built-ins
     new_keys = gs.globals_filter_by_builtins(global_nodes.keys())
     global_nodes = dict([(key,nodes) for (key,nodes) in global_nodes.items()
         if key in new_keys])
     # - with jshints
     for key, nodes in global_nodes.items():
         global_nodes[key] = [node for node in nodes 
             if not gs.ident_is_ignored(key, node)]
     # warn remaining
     for key, nodes in global_nodes.items():
         for node in nodes:
             issue = warn("Unknown global symbol used: '%s'" % key, self.file_name, node)
             self.issues.append(issue)
Beispiel #2
0
 def unknown_globals(self, scope):
     # collect scope's global use locations
     global_nodes = defaultdict(list)  # {assembled: [node]}
     for id_, scopeVar in scope.globals().items():
         for head_node in scopeVar.uses:
             var_top = treeutil.findVarRoot(head_node)
             full_name = (treeutil.assembleVariable(var_top))[0]
             global_nodes[full_name].append(head_node)
     # filter allowed globals
     # - from config
     global_nodes = dict([(key, nodes)
                          for (key, nodes) in global_nodes.items()
                          if key not in self.opts.allowed_globals])
     # - from known classes and namespaces
     global_nodes = dict([
         (key, nodes)
         for (key, nodes) in global_nodes.items() if not extension_match_in(
             key, self.known_globals_bases, self.opts.class_namespaces)
     ])  # known classes (classList + their namespaces)
     # - from built-ins
     new_keys = gs.globals_filter_by_builtins(global_nodes.keys())
     global_nodes = dict([(key, nodes)
                          for (key, nodes) in global_nodes.items()
                          if key in new_keys])
     # - with jshints
     for key, nodes in global_nodes.items():
         global_nodes[key] = [
             node for node in nodes if not gs.ident_is_ignored(key, node)
         ]
     # warn remaining
     for key, nodes in global_nodes.items():
         for node in nodes:
             issue = warn("Unknown global symbol used: '%s'" % key,
                          self.file_name, node)
             self.issues.append(issue)
 def filter_symbols_by_jshints(self, tree, depsItems):
     result = []
     for depsItem in depsItems:
         deps_repr = depsItem.name
         if depsItem.attribute:
             deps_repr += "." + depsItem.attribute
         is_ignored = global_symbols.ident_is_ignored(deps_repr, depsItem.node)
         if not is_ignored:
             result.append(depsItem)
     return result
 def filter_symbols_by_jshints(self, tree, depsItems):
     result = []
     for depsItem in depsItems:
         #if self.id=='qx.dev.StackTrace' and depsItem.name=='qx.bom.client.EcmaScript':
         #    import pydb; pydb.debugger()
         deps_repr = depsItem.name
         if depsItem.attribute:
             deps_repr += '.' + depsItem.attribute
         if not global_symbols.ident_is_ignored(deps_repr, depsItem.node):
             result.append(depsItem)
     return result
Beispiel #5
0
 def filter_symbols_by_jshints(self, tree, depsItems):
     result = []
     for depsItem in depsItems:
         #if self.id=='qx.dev.StackTrace' and depsItem.name=='qx.bom.client.EcmaScript':
         #    import pydb; pydb.debugger()
         deps_repr = depsItem.name
         if depsItem.attribute:
             deps_repr += '.' + depsItem.attribute
         if not global_symbols.ident_is_ignored(deps_repr, depsItem.node):
             result.append(depsItem)
     return result
Beispiel #6
0
 def filter_symbols_by_jshints(self, tree, depsItems):
     result = []
     for depsItem in depsItems:
         deps_repr = depsItem.name
         if depsItem.attribute:
             deps_repr += '.' + depsItem.attribute
         is_ignored = global_symbols.ident_is_ignored(
             deps_repr, depsItem.node)
         if not is_ignored:
             result.append(depsItem)
     return result
 def filter_symbols_by_jshints(self, tree, depsItems):
     result = []
     tree = jshints.create_hints_tree(tree)
     for depsItem in depsItems:
         #if self.id == 'qx.test.ui.decoration.MDoubleBorder' and depsItem.name=='TestDecorator':
         #    import pydb; pydb.debugger()
         deps_repr = depsItem.name
         if depsItem.attribute:
             deps_repr += '.' + depsItem.attribute
         if not global_symbols.ident_is_ignored(deps_repr, depsItem.node):
             result.append(depsItem)
     return result