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 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_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])
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])