@@ -60,50 +60,41 @@ def handle(self, *args, **options):
6060 super ().handle (* args , ** options )
6161 exit_code = 0
6262
63- fail_level = options ["fail_level" ]
64- compliance_alerts = get_project_compliance_alerts (self .project , fail_level )
65-
66- compliance_alerts_count = sum (
67- len (issues_by_severity )
68- for model_alerts in compliance_alerts .values ()
69- for issues_by_severity in model_alerts .values ()
70- )
63+ if self .check_compliance (options ["fail_level" ]):
64+ exit_code = 1
7165
72- if compliance_alerts_count :
66+ if options [ "fail_on_vulnerabilities" ] and self . check_vulnerabilities () :
7367 exit_code = 1
74- if self .verbosity > 0 :
75- msg = [
76- f"{ compliance_alerts_count } compliance issues detected on this "
77- f"project."
78- ]
79- for label , issues in compliance_alerts .items ():
80- msg .append (f"[{ label } ]" )
81- for severity , entries in issues .items ():
82- msg .append (f" > { severity .upper ()} : { len (entries )} " )
83- if self .verbosity > 1 :
84- msg .append (" " + "\n " .join (entries ))
8568
86- self . stderr . write ( " \n " . join ( msg ) )
69+ sys . exit ( exit_code )
8770
88- if options ["fail_on_vulnerabilities" ]:
89- if self .handle_vulnerabilities ():
90- exit_code = 1
71+ def check_compliance (self , fail_level ):
72+ alerts = get_project_compliance_alerts (self .project , fail_level )
73+ count = sum (
74+ len (issues ) for model in alerts .values () for issues in model .values ()
75+ )
9176
92- sys .exit (exit_code )
77+ if count and self .verbosity > 0 :
78+ self .stderr .write (f"{ count } compliance issues detected." )
79+ for label , model in alerts .items ():
80+ self .stderr .write (f"[{ label } ]" )
81+ for severity , entries in model .items ():
82+ self .stderr .write (f" > { severity .upper ()} : { len (entries )} " )
83+ if self .verbosity > 1 :
84+ self .stderr .write (" " + "\n " .join (entries ))
85+ return count > 0
9386
94- def handle_vulnerabilities (self ):
95- packages_qs = self .project .discoveredpackages .vulnerable ()
96- dependencies_qs = self .project .discovereddependencies .vulnerable ()
97- vulnerability_count = packages_qs .count () + dependencies_qs .count ()
87+ def check_vulnerabilities (self ):
88+ packages = self .project .discoveredpackages .vulnerable ()
89+ dependencies = self .project .discovereddependencies .vulnerable ()
90+ vulnerable_records = list (packages ) + list (dependencies )
91+ count = len (vulnerable_records )
9892
99- if vulnerability_count :
100- if self . verbosity > 0 :
101- self .stderr .write (f"{ vulnerability_count } vulnerabilities found:" )
102- for entry in [ * packages_qs , * dependencies_qs ] :
93+ if self . verbosity > 0 :
94+ if count :
95+ self .stderr .write (f"{ count } vulnerable records found:" )
96+ for entry in vulnerable_records :
10397 self .stderr .write (str (entry ))
104- return True
105-
106- else :
107- if self .verbosity > 0 :
98+ else :
10899 self .stdout .write ("No vulnerabilities found" )
109- return False
100+ return count > 0
0 commit comments