@@ -87,10 +87,7 @@ def add_finding(self, finding, dupes):
8787 dupes [key ] = finding
8888
8989 def get_filename_and_path_from_dependency (
90- self ,
91- dependency ,
92- related_dependency ,
93- namespace ,
90+ self , dependency , related_dependency , namespace ,
9491 ):
9592 if related_dependency is None :
9693 return dependency .findtext (
@@ -107,10 +104,7 @@ def get_filename_and_path_from_dependency(
107104 return None , None
108105
109106 def get_component_name_and_version_from_dependency (
110- self ,
111- dependency ,
112- related_dependency ,
113- namespace ,
107+ self , dependency , related_dependency , namespace ,
114108 ):
115109 identifiers_node = dependency .find (namespace + "identifiers" )
116110 if identifiers_node is not None :
@@ -122,13 +116,20 @@ def get_component_name_and_version_from_dependency(
122116 purl_parts = purl .to_dict ()
123117 component_name = (
124118 purl_parts ["namespace" ] + ":"
125- if purl_parts ["namespace" ] and len (purl_parts ["namespace" ]) > 0
119+ if purl_parts ["namespace" ]
120+ and len (purl_parts ["namespace" ]) > 0
121+ else ""
122+ )
123+ component_name += (
124+ purl_parts ["name" ]
125+ if purl_parts ["name" ] and len (purl_parts ["name" ]) > 0
126126 else ""
127127 )
128- component_name += purl_parts ["name" ] if purl_parts ["name" ] and len (purl_parts ["name" ]) > 0 else ""
129128 component_name = component_name or None
130129 component_version = (
131- purl_parts ["version" ] if purl_parts ["version" ] and len (purl_parts ["version" ]) > 0 else ""
130+ purl_parts ["version" ]
131+ if purl_parts ["version" ] and len (purl_parts ["version" ]) > 0
132+ else ""
132133 )
133134 return component_name , component_version , pck_id
134135
@@ -148,10 +149,20 @@ def get_component_name_and_version_from_dependency(
148149 if cpe_node :
149150 cpe_id = cpe_node .findtext (f"{ namespace } name" )
150151 cpe = CPE (cpe_id )
151- component_name = cpe .get_vendor ()[0 ] + ":" if len (cpe .get_vendor ()) > 0 else ""
152- component_name += cpe .get_product ()[0 ] if len (cpe .get_product ()) > 0 else ""
152+ component_name = (
153+ cpe .get_vendor ()[0 ] + ":"
154+ if len (cpe .get_vendor ()) > 0
155+ else ""
156+ )
157+ component_name += (
158+ cpe .get_product ()[0 ] if len (cpe .get_product ()) > 0 else ""
159+ )
153160 component_name = component_name or None
154- component_version = cpe .get_version ()[0 ] if len (cpe .get_version ()) > 0 else None
161+ component_version = (
162+ cpe .get_version ()[0 ]
163+ if len (cpe .get_version ()) > 0
164+ else None
165+ )
155166 return component_name , component_version , None
156167
157168 maven_node = identifiers_node .find (
@@ -240,8 +251,7 @@ def get_severity_and_cvss_meta(self, vulnerability, namespace) -> dict:
240251 if severity :
241252 if severity .strip ().lower () not in self .SEVERITY_MAPPING :
242253 logger .warning (
243- "Warning: Unknow severity value detected '%s'. Bypass to 'Medium' value" ,
244- severity ,
254+ "Warning: Unknow severity value detected '%s'. Bypass to 'Medium' value" , severity ,
245255 )
246256 severity = "Medium"
247257 else :
@@ -256,20 +266,13 @@ def get_severity_and_cvss_meta(self, vulnerability, namespace) -> dict:
256266 }
257267
258268 def get_finding_from_vulnerability (
259- self ,
260- dependency ,
261- related_dependency ,
262- vulnerability ,
263- test ,
264- namespace ,
269+ self , dependency , related_dependency , vulnerability , test , namespace ,
265270 ):
266271 (
267272 dependency_filename ,
268273 dependency_filepath ,
269274 ) = self .get_filename_and_path_from_dependency (
270- dependency ,
271- related_dependency ,
272- namespace ,
275+ dependency , related_dependency , namespace ,
273276 )
274277 # logger.debug('dependency_filename: %s', dependency_filename)
275278
@@ -315,17 +318,13 @@ def get_finding_from_vulnerability(
315318 component_version ,
316319 component_purl ,
317320 ) = self .get_component_name_and_version_from_dependency (
318- dependency ,
319- related_dependency ,
320- namespace ,
321+ dependency , related_dependency , namespace ,
321322 )
322323
323324 stripped_name = name
324325 # startswith CVE-XXX-YYY
325326 stripped_name = re .sub (
326- r"^CVE-\d{4}-\d{4,7}" ,
327- "" ,
328- stripped_name ,
327+ r"^CVE-\d{4}-\d{4,7}" , "" , stripped_name ,
329328 ).strip ()
330329 # startswith CWE-XXX:
331330 stripped_name = re .sub (r"^CWE-\d+\:" , "" , stripped_name ).strip ()
@@ -334,8 +333,7 @@ def get_finding_from_vulnerability(
334333
335334 if component_name is None :
336335 logger .warning (
337- "component_name was None for File: %s, using dependency file name instead." ,
338- dependency_filename ,
336+ "component_name was None for File: %s, using dependency file name instead." , dependency_filename ,
339337 )
340338 component_name = dependency_filename
341339
@@ -354,9 +352,15 @@ def get_finding_from_vulnerability(
354352 ref_url = reference_node .findtext (f"{ namespace } url" )
355353 ref_name = reference_node .findtext (f"{ namespace } name" )
356354 if ref_url == ref_name :
357- reference_detail += f"**Source:** { ref_source } \n **URL:** { ref_url } \n \n "
355+ reference_detail += (
356+ f"**Source:** { ref_source } \n **URL:** { ref_url } \n \n "
357+ )
358358 else :
359- reference_detail += f"**Source:** { ref_source } \n **URL:** { ref_url } \n **Name:** { ref_name } \n \n "
359+ reference_detail += (
360+ f"**Source:** { ref_source } \n "
361+ f"**URL:** { ref_url } \n "
362+ f"**Name:** { ref_name } \n \n "
363+ )
360364
361365 if related_dependency is not None :
362366 tags .append ("related" )
@@ -366,18 +370,14 @@ def get_finding_from_vulnerability(
366370 notes = "Document on why we are suppressing this vulnerability is missing!"
367371 tags .append ("no_suppression_document" )
368372 mitigation = f"**This vulnerability is mitigated and/or suppressed:** { notes } \n "
369- mitigation += (
370- f"Update { component_name } :{ component_version } to at least the version recommended in the description"
371- )
373+ mitigation += f"Update { component_name } :{ component_version } to at least the version recommended in the description"
372374 mitigated = datetime .datetime .now (datetime .UTC )
373375 is_Mitigated = True
374376 active = False
375377 tags .append ("suppressed" )
376378
377379 else :
378- mitigation = (
379- f"Update { component_name } :{ component_version } to at least the version recommended in the description"
380- )
380+ mitigation = f"Update { component_name } :{ component_version } to at least the version recommended in the description"
381381 description += "\n **Filepath:** " + str (dependency_filepath )
382382 active = True
383383
@@ -467,15 +467,19 @@ def get_findings(self, filename, test):
467467 namespace + "relatedDependencies" ,
468468 )
469469 if relatedDependencies is not None :
470- for relatedDependency in relatedDependencies .findall (
470+ for (
471+ relatedDependency
472+ ) in relatedDependencies .findall (
471473 namespace + "relatedDependency" ,
472474 ):
473- finding = self .get_finding_from_vulnerability (
474- dependency ,
475- relatedDependency ,
476- vulnerability ,
477- test ,
478- namespace ,
475+ finding = (
476+ self .get_finding_from_vulnerability (
477+ dependency ,
478+ relatedDependency ,
479+ vulnerability ,
480+ test ,
481+ namespace ,
482+ )
479483 )
480484 if finding : # could be None
481485 if scan_date :
@@ -499,9 +503,7 @@ def get_findings(self, filename, test):
499503 elif settings .V3_FEATURE_LOCATIONS :
500504 # Collect product-level dependency locations
501505 _ , _ , component_purl = self .get_component_name_and_version_from_dependency (
502- dependency ,
503- None ,
504- namespace ,
506+ dependency , None , namespace ,
505507 )
506508 if component_purl :
507509 test .unsaved_metadata .append (
0 commit comments