Esempio n. 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)
Esempio n. 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)
Esempio n. 3
0
 def filter_builtins(self, global_nodes):
     filtered_keys = gs.globals_filter_by_builtins(global_nodes.keys())
     return dict([(key,nodes) for (key,nodes) in global_nodes.items()
         if key in filtered_keys])
Esempio n. 4
0
 def filter_builtins(self, global_nodes):
     filtered_keys = gs.globals_filter_by_builtins(global_nodes.keys())
     return dict([(key,nodes) for (key,nodes) in global_nodes.items()
         if key in filtered_keys])