Skip to content

Commit 47a36c6

Browse files
sacca97copernico
authored andcommitted
refactored main and report
1 parent cdb2460 commit 47a36c6

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

prospector/client/cli/main.py

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77

88
from dotenv import load_dotenv
99

10+
from util.http import ping_backend
11+
1012
path_root = os.getcwd()
1113
if path_root not in sys.path:
1214
sys.path.append(path_root)
1315

1416

1517
import client.cli.report as report # noqa: E402
1618
from client.cli.console import ConsoleWriter, MessageStatus # noqa: E402
17-
from client.cli.prospector_client import DEFAULT_BACKEND # noqa: E402
1819
from client.cli.prospector_client import TIME_LIMIT_AFTER # noqa: E402
1920
from client.cli.prospector_client import TIME_LIMIT_BEFORE # noqa: E402
2021
from client.cli.prospector_client import prospector # noqa: E402; noqa: E402
@@ -51,7 +52,7 @@ def main(argv): # noqa: C901
5152
)
5253
return
5354

54-
# if args.get("ping"):
55+
# if config.ping:
5556
# return ping_backend(backend, get_level() < logging.INFO)
5657

5758
config.pub_date = (
@@ -62,55 +63,32 @@ def main(argv): # noqa: C901
6263
pretty_log(logger, config.__dict__)
6364

6465
logger.debug("Vulnerability ID: " + config.cve_id)
65-
logger.debug(f"time-limit before: {TIME_LIMIT_BEFORE}")
66-
logger.debug(f"time-limit after: {TIME_LIMIT_AFTER}")
6766

6867
results, advisory_record = prospector(
6968
vulnerability_id=config.cve_id,
7069
repository_url=config.repository,
7170
publication_date=config.pub_date,
7271
vuln_descr=config.description,
73-
tag_interval=config.tag_interval,
72+
# tag_interval=config.tag_interval,
7473
version_interval=config.version_interval,
7574
modified_files=config.modified_files,
7675
advisory_keywords=config.keywords,
77-
time_limit_before=TIME_LIMIT_BEFORE,
78-
time_limit_after=TIME_LIMIT_AFTER,
7976
use_nvd=config.use_nvd,
80-
nvd_rest_endpoint="",
8177
fetch_references=config.fetch_references,
8278
backend_address=config.backend,
8379
use_backend=config.use_backend,
8480
git_cache=config.git_cache,
8581
limit_candidates=config.max_candidates,
86-
rules=["ALL"],
8782
)
8883

8984
if config.preprocess_only:
9085
return
9186

92-
with ConsoleWriter("Generating report\n") as console:
93-
match config.report:
94-
case "console":
95-
report.console_(results, advisory_record, get_level() < logging.INFO)
96-
case "json":
97-
report.json_(results, advisory_record, config.report_filename)
98-
case "html":
99-
report.html_(results, advisory_record, config.report_filename)
100-
case "all":
101-
report.json_(results, advisory_record, config.report_filename)
102-
report.html_(results, advisory_record, config.report_filename)
103-
case _:
104-
logger.warning("Invalid report type specified, using 'console'")
105-
console.set_status(MessageStatus.WARNING)
106-
console.print(
107-
f"{config.report} is not a valid report type, 'console' will be used instead",
108-
)
109-
report.console_(results, advisory_record, get_level() < logging.INFO)
110-
111-
logger.info("\n" + execution_statistics.generate_console_tree())
112-
execution_time = execution_statistics["core"]["execution time"][0]
113-
console.print(f"Report saved in {config.report_filename}")
87+
report.generate_report(
88+
results, advisory_record, config.report, config.report_filename
89+
)
90+
91+
execution_time = execution_statistics["core"]["execution time"][0]
11492
ConsoleWriter.print(f"Execution time: {execution_time:.3f}s")
11593

11694
return

prospector/client/cli/report.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import json
2+
import logging
23
import os
34
from pathlib import Path
45
from typing import List
56

67
import jinja2
78

9+
from client.cli.console import ConsoleWriter, MessageStatus
810
from datamodel.advisory import AdvisoryRecord
911
from datamodel.commit import Commit
10-
from log.logger import logger
12+
from log.logger import get_level, logger
1113
from stats.execution import execution_statistics
1214

1315

@@ -98,3 +100,27 @@ def format_annotations(commit: Commit) -> str:
98100
)
99101

100102
print(f"Found {count} candidates\nAdvisory record\n{advisory_record}")
103+
104+
105+
def generate_report(results, advisory_record, report_type, report_filename):
106+
with ConsoleWriter("Generating report\n") as console:
107+
match report_type:
108+
case "console":
109+
console_(results, advisory_record, get_level() < logging.INFO)
110+
case "json":
111+
json_(results, advisory_record, report_filename)
112+
case "html":
113+
html_(results, advisory_record, report_filename)
114+
case "all":
115+
json_(results, advisory_record, report_filename)
116+
html_(results, advisory_record, report_filename)
117+
case _:
118+
logger.warning("Invalid report type specified, using 'console'")
119+
console.set_status(MessageStatus.WARNING)
120+
console.print(
121+
f"{report_type} is not a valid report type, 'console' will be used instead",
122+
)
123+
console_(results, advisory_record, get_level() < logging.INFO)
124+
125+
logger.info("\n" + execution_statistics.generate_console_tree())
126+
console.print(f"Report saved in {report_filename}")

0 commit comments

Comments
 (0)