def to_pdf_file(self, filename):
results = self.sorted_results
tally = lambda c, s: sum(1 for res in results if res['issue_confidence'] == c and res['issue_severity'] == s)
summary_table = [[s] + [tally(c, s) for c in reversed(bandit.RANKING)] for s in reversed(bandit.RANKING)]
summary_table = tabulate.tabulate(
summary_table,
headers=[''] + list(reversed(bandit.RANKING)),
tablefmt='markdown'
)
ctr = collections.Counter()
ctr.update(((res['test_id'], res['test_name'], res['issue_severity']) for res in results))
findings_table = [(k[0], k[1], k[2], v) for k, v in ctr.items()]
findings_table = sorted(findings_table, key=lambda k: k[3])
findings_table = sorted(findings_table, key=lambda k: bandit.RANKING_VALUES[k[2]])
findings_table = reversed(findings_table)
findings_table = tabulate.tabulate(
findings_table,
headers=('ID', 'Finding Name', 'Severity', 'Occurrences'),
tablefmt='markdown'
)
text = PDF_TEMPLATE.render(
extra=self.data.get('_jj'),
findings_table=findings_table,
results=results,
python_version=self.data.get('python_version'),
summary_table=summary_table,
timestamp=self.generated_at
)
pypandoc.convert_text(text, 'pdf', extra_args=['--latex-engine=xelatex'], format='markdown', outputfile=filename)
评论列表
文章目录