Skip to content

Commit 670b6c5

Browse files
author
Michael Long
committed
Show summary markdown table on zero vulns
1 parent de3014e commit 670b6c5

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

entrypoint/entrypoint/orchestrator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ def write_pkg_vuln_report_csv(args, criticals, highs, mediums, lows, others):
381381
def write_pkg_vuln_report_markdown(args, total_vulns, criticals, highs, mediums, lows, others):
382382
if int(total_vulns) == 0:
383383
logging.info(f"skipping package vulnerability markdown report because no vulnerabilities were detected")
384-
return
384+
return None
385385

386386
with open(args.out_scan, "r") as f:
387387
inspector_scan = json.load(f)

entrypoint/entrypoint/pkg_vuln.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,9 @@ def sort_vulns(vulns):
421421
return sorted_vulns
422422

423423

424-
def post_github_step_summary(markdown="null"):
425-
if markdown == "null":
426-
return
424+
def post_github_step_summary(markdown=None):
425+
if markdown is None:
426+
markdown = get_zero_vuln_summary_table()
427427

428428
job_summary_file = "/tmp/inspector.md"
429429
if os.getenv('GITHUB_ACTIONS'):
@@ -456,3 +456,13 @@ def get_pkg_vulns(inspector_scan_vulns: dict):
456456
pkg_vulns.append(vuln)
457457

458458
return pkg_vulns
459+
460+
461+
def get_zero_vuln_summary_table() -> str:
462+
markdown = "## Vulnerability Counts by Severity\n\n"
463+
markdown += "| Severity | Count |\n"
464+
markdown += "|----------|-------|\n"
465+
for severity in ["Critical", "High", "Medium", "Low", "Other"]:
466+
markdown += f"| {severity} | 0 |\n"
467+
markdown += "\n\n"
468+
return markdown

entrypoint/tests/test_pkg_vuln.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import os
23
import unittest
34

45
from entrypoint import pkg_vuln
@@ -37,6 +38,24 @@ def test_vulns_to_obj(self):
3738
vulns = pkg_vuln.vulns_to_obj(inspector_scan)
3839
self.assertTrue(vulns != None)
3940

41+
def test_post_github_step_summary_no_vulns(self):
42+
43+
dst_markdown_with_zero_vulns = "/tmp/inspector.md"
44+
cleanup_stale_markdown_report(dst_markdown_with_zero_vulns)
45+
46+
markdown_with_zero_vulns = None
47+
pkg_vuln.post_github_step_summary(markdown_with_zero_vulns)
48+
49+
expected = pkg_vuln.get_zero_vuln_summary_table()
50+
received = ""
51+
52+
with open(dst_markdown_with_zero_vulns, "r") as f:
53+
received = f.read()
54+
55+
self.assertEqual(expected, received)
56+
57+
cleanup_stale_markdown_report(dst_markdown_with_zero_vulns)
58+
4059

4160
def get_scan_body(test_file):
4261
# test_file = "tests/test_data/artifacts/containers/dockerfile_checks/inspector-scan-cdx.json"
@@ -47,5 +66,12 @@ def get_scan_body(test_file):
4766
return scan_body
4867

4968

69+
def cleanup_stale_markdown_report(path):
70+
try:
71+
os.remove(path)
72+
except:
73+
return
74+
75+
5076
if __name__ == '__main__':
5177
unittest.main()

0 commit comments

Comments
 (0)