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