def run(self): self.sleep(1) exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: try: self.reset() source = self._editor.get_text() if self._encoding is not None: source = source.encode(self._encoding) parseResult = compiler.parse(source) lint_checker = checker.Checker(parseResult, self._path) for m in lint_checker.messages: lineno = m.lineno - 1 if lineno not in self.errorsSummary: message = [m.message % m.message_args] else: message = self.errorsSummary[lineno] message += [m.message % m.message_args] self.errorsSummary[lineno] = message except Exception, reason: message = '' if hasattr(reason, 'msg'): message = reason.msg else: message = reason.message if hasattr(reason, 'lineno'): self.errorsSummary[reason.lineno - 1] = [message] else: self.errorsSummary[0] = [message] finally:
def run(self): exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: self.reset() source = self._neditor.text text = "[PyFlakes] %s" # Compile into an AST and handle syntax errors try: tree = compile(source, self._path, "exec", _ast.PyCF_ONLY_AST) except SyntaxError as reason: if reason.text is None: logger.error("Syntax error") else: self.checks[reason.lineno - 1] = (text % reason.args[0], reason.offset - 1) else: # Okay, now check it lint_checker = checker.Checker(tree, self._path) lint_checker.messages.sort(key=lambda msg: msg.lineno) for message in lint_checker.messages: lineno = message.lineno - 1 if lineno not in self.checks: text = [message.message % message.message_args] else: text = self.checks[lineno] text += [message.message % message.message_args] self.checks[lineno] = (text, message.col) self.checkerCompleted.emit()
def run(self): if file_manager.get_file_extension(self._editor.ID) == 'py': try: self.reset() parseResult = compiler.parse(open(self._editor.ID).read()) self.checker = checker.Checker(parseResult, self._editor.ID) for m in self.checker.messages: if m.lineno not in self.errorsSummary: message = [m.message % m.message_args] else: message = self.errorsSummary[m.lineno] message += [m.message % m.message_args] self.errorsSummary[m.lineno] = message except Exception, reason: self.errorsSummary[reason.lineno] = reason.msg
def check(codeString, filename, reporter=None, builtins=None): """ Check the Python source given by C{codeString} for flakes. @param codeString: The Python source to check. @type codeString: C{str} @param filename: The name of the file the source came from, used to report errors. @type filename: C{str} @param reporter: A L{Reporter} instance, where errors and warnings will be reported. @return: The number of warnings emitted. @rtype: C{int} """ if reporter is None: reporter = modReporter._makeDefaultReporter() # First, compile into an AST and handle syntax errors. try: tree = compile(codeString, filename, "exec", _ast.PyCF_ONLY_AST) except SyntaxError: value = sys.exc_info()[1] msg = value.args[0] (lineno, offset, text) = value.lineno, value.offset, value.text # If there's an encoding problem with the file, the text is None. if text is None: # Avoid using msg, since for the only known case, it contains a # bogus message that claims the encoding the file declared was # unknown. reporter.unexpectedError(filename, 'problem decoding source') else: reporter.syntaxError(filename, msg, lineno, offset, text) return 1 except Exception: reporter.unexpectedError(filename, 'problem decoding source') return 1 # Okay, it's syntactically valid. Now check it. w = checker.Checker(tree, filename, builtins=builtins) w.messages.sort(key=lambda m: m.lineno) for warning in w.messages: reporter.flake(warning) return len(w.messages)
def run(self): self.sleep(1) exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: try: self.reset() source = self._editor.text() if self._encoding is not None: source = source.encode(self._encoding) tree = compile(source, self._path, "exec", _ast.PyCF_ONLY_AST) #parseResult = compiler.parse(source) lint_checker = checker.Checker(tree, self._path, builtins=self._builtins) for m in lint_checker.messages: lineno = m.lineno - 1 if lineno not in self.checks: message = [m.message % m.message_args] else: message = self.checks[lineno] message += [m.message % m.message_args] self.checks[lineno] = message except Exception as reason: message = '' if hasattr(reason, 'msg'): message = reason.msg else: message = reason.message if hasattr(reason, 'lineno') and reason.lineno: self.checks[reason.lineno - 1] = [message] else: self.checks[0] = [message] finally: ignored_range, ignored_lines = self._get_ignore_range() to_remove = [ x for x in self.checks for r in ignored_range if r[0] < x < r[1] ] to_remove += ignored_lines for line in to_remove: self.checks.pop(line, None) else: self.reset() self.checkerCompleted.emit()
def run(self): self.sleep(1) exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: try: self.reset() source = self._editor.get_text() if self._encoding is not None: source = source.encode(self._encoding) parseResult = compiler.parse(source) lint_checker = checker.Checker(parseResult, self._path) for m in lint_checker.messages: lineno = m.lineno - 1 if lineno not in self.errorsSummary: message = [m.message % m.message_args] else: message = self.errorsSummary[lineno] message += [m.message % m.message_args] self.errorsSummary[lineno] = message except Exception as reason: message = '' if hasattr(reason, 'msg'): message = reason.msg else: message = reason.message if hasattr(reason, 'lineno'): self.errorsSummary[reason.lineno - 1] = [message] else: self.errorsSummary[0] = [message] finally: ignored_range, ignored_lines = self._get_ignore_range() to_remove = [ x for x in self.errorsSummary for r in ignored_range if r[0] < x < r[1] ] to_remove += ignored_lines for line in to_remove: self.errorsSummary.pop(line, None) else: self.reset()
def run(self): exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: try: self.reset() source = self._neditor.text text = "[Error]: %s" # Compile into an AST and handle syntax errors try: tree = compile(source, self._path, "exec", _ast.PyCF_ONLY_AST) except SyntaxError as reason: if reason.text is None: logger.error("Syntax error") else: text = text % reason.args[0] range_ = helpers.get_range(self._neditor, reason.lineno - 1, reason.offset) self.checks[reason.lineno - 1].append( (range_, text, "")) else: # Okay, now check it lint_checker = checker.Checker(tree, self._path) lint_checker.messages.sort(key=lambda msg: msg.lineno) source_lines = source.split('\n') for message in lint_checker.messages: lineno = message.lineno - 1 text = message.message % message.message_args range_ = helpers.get_range(self._neditor, lineno, message.col) self.checks[lineno].append( (range_, text, source_lines[lineno].strip())) except Exception as reason: logger.warning("Checker not finished: {}".format(reason)) self.checkerCompleted.emit()
def run(self): exts = settings.SYNTAX.get('python')['extension'] file_ext = file_manager.get_file_extension(self._path) if file_ext in exts: self.reset() source = self._neditor.text text = "[Error]: %s" # Compile into an AST and handle syntax errors try: tree = compile(source, self._path, "exec", _ast.PyCF_ONLY_AST) except SyntaxError as reason: if reason.text is None: logger.error("Syntax error") else: text = text % reason.args[0] range_ = helpers.get_range(self._neditor, reason.lineno - 1, reason.offset) self.checks[reason.lineno - 1].append((range_, text)) else: # Okay, now check it lint_checker = checker.Checker(tree, self._path) lint_checker.messages.sort(key=lambda msg: msg.lineno) for message in lint_checker.messages: lineno = message.lineno - 1 # if lineno not in self.checks: # text = [message.message % message.message_args] # else: # text = self.checks[lineno] # text += (message.message % message.message_args,) text = message.message % message.message_args range_ = helpers.get_range(self._neditor, lineno, message.col) self.checks[lineno].append((range_, text)) self.checkerCompleted.emit()