| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 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"
|