관리-도구
편집 파일: text.py
from prospector.formatters.base import Formatter __all__ = ("TextFormatter",) # pylint: disable=unnecessary-lambda class TextFormatter(Formatter): summary_labels = ( ("started", "Started"), ("completed", "Finished"), ("time_taken", "Time Taken", lambda x: "%s seconds" % x), ("formatter", "Formatter"), ("profiles", "Profiles"), ("strictness", "Strictness"), ("libraries", "Libraries Used", lambda x: ", ".join(x)), ("tools", "Tools Run", lambda x: ", ".join(x)), ("adaptors", "Adaptors", lambda x: ", ".join(x)), ("message_count", "Messages Found"), ("external_config", "External Config"), ) def render_summary(self): output = [ "Check Information", "=================", ] label_width = max(len(label[1]) for label in self.summary_labels) for summary_label in self.summary_labels: key = summary_label[0] if key in self.summary: label = summary_label[1] if len(summary_label) > 2: value = summary_label[2](self.summary[key]) else: value = self.summary[key] output.append( " %s: %s" % ( label.rjust(label_width), value, ) ) return "\n".join(output) def render_message(self, message): output = [] if message.location.module: output.append(f"{message.location.module} ({self._make_path(message.location.path)}):") else: output.append("%s:" % self._make_path(message.location.path)) output.append( " L%s:%s %s: %s - %s" % ( message.location.line or "-", message.location.character if message.location.character else "-", message.location.function, message.source, message.code, ) ) output.append(" %s" % message.message) return "\n".join(output) def render_messages(self): output = [ "Messages", "========", "", ] for message in self.messages: output.append(self.render_message(message)) output.append("") return "\n".join(output) def render_profile(self): output = ["Profile", "=======", "", self.profile.as_yaml().strip()] return "\n".join(output) def render(self, summary=True, messages=True, profile=False): output = [] if messages and self.messages: # if there are no messages, don't render an empty header output.append(self.render_messages()) if profile: output.append(self.render_profile()) if summary: output.append(self.render_summary()) return "\n\n\n".join(output) + "\n"