77import fosslight_util .constant as constant
88from ._scan_item import ScanItem
99from ._scan_item import is_exclude_file
10+ from ._scan_item import replace_word
1011
1112logger = logging .getLogger (constant .LOGGER_NAME )
13+ SCANOSS_INFO_HEADER = ['No' , 'Source Name or Path' , 'Component Declared' , 'SPDX Tag' ,
14+ 'File Header' , 'License File' , 'Scancode' ,
15+ 'scanoss_matched_lines' , 'scanoss_fileURL' ]
16+
17+
18+ def parsing_extraInfo (scanned_result ):
19+ scanoss_extra_info = []
20+ for scan_item in scanned_result :
21+ license_w_source = scan_item .scanoss_reference
22+ if license_w_source :
23+ extra_item = [scan_item .file , ',' .join (license_w_source ['component_declared' ]),
24+ ',' .join (license_w_source ['file_spdx_tag' ]),
25+ ',' .join (license_w_source ['file_header' ]),
26+ ',' .join (license_w_source ['license_file' ]),
27+ ',' .join (license_w_source ['scancode' ]),
28+ scan_item .matched_lines , scan_item .fileURL ]
29+ scanoss_extra_info .append (extra_item )
30+ scanoss_extra_info .insert (0 , SCANOSS_INFO_HEADER )
31+ return scanoss_extra_info
1232
1333
1434def parsing_scanResult (scanoss_report ):
@@ -21,39 +41,49 @@ def parsing_scanResult(scanoss_report):
2141 continue
2242
2343 if 'component' in findings [0 ]:
24- result_item .set_oss_name ( findings [0 ]['component' ])
44+ result_item .oss_name = findings [0 ]['component' ]
2545 if 'version' in findings [0 ]:
26- result_item .set_oss_version ( findings [0 ]['version' ])
46+ result_item .oss_version = findings [0 ]['version' ]
2747 if 'url' in findings [0 ]:
28- result_item .set_download_location ( findings [0 ]['url' ])
48+ result_item .download_location = findings [0 ]['url' ]
2949
3050 license_detected = []
51+ license_w_source = {"component_declared" : [], "file_spdx_tag" : [],
52+ "file_header" : [], "license_file" : [], "scancode" : []}
3153 copyright_detected = []
3254 if 'licenses' in findings [0 ]:
3355 for license in findings [0 ]['licenses' ]:
34- license_detected .append (license ['name' ].lower ())
56+
57+ license_lower = license ['name' ].lower ()
58+ for word in replace_word :
59+ if word in license_lower :
60+ license_lower = license_lower .replace (word , "" )
61+ license_detected .append (license_lower )
62+
63+ if license ['source' ] not in license_w_source :
64+ license_w_source [license ['source' ]] = []
65+ license_w_source [license ['source' ]].append (license ['name' ])
3566 if len (license_detected ) > 0 :
36- result_item .set_licenses (license_detected )
67+ result_item .licenses = license_detected
68+ result_item .scanoss_reference = license_w_source
3769 if 'copyrights' in findings [0 ]:
3870 for copyright in findings [0 ]['copyrights' ]:
3971 copyright_detected .append (copyright ['name' ])
4072 if len (copyright_detected ) > 0 :
41- result_item .set_copyright ( copyright_detected )
73+ result_item .copyright = copyright_detected
4274
4375 if is_exclude_file (file_path ):
44- result_item .set_exclude ( True )
76+ result_item .exclude = True
4577
46- if 'vendor' in findings [0 ]:
47- result_item .set_vendor (findings [0 ]['vendor' ])
4878 if 'file_url' in findings [0 ]:
49- result_item .set_fileURL ( findings [0 ]['file_url' ])
79+ result_item .fileURL = findings [0 ]['file_url' ]
5080 if 'matched' in findings [0 ]:
5181 if 'lines' in findings [0 ]:
52- result_item .set_matched_lines ( f"{ findings [0 ]['matched' ]} ({ findings [0 ]['lines' ]} )" )
82+ result_item .matched_lines = f"{ findings [0 ]['matched' ]} ({ findings [0 ]['lines' ]} )"
5383 else :
54- result_item .set_matched_lines ( f"{ findings [0 ]['matched' ]} " )
84+ result_item .matched_lines = f"{ findings [0 ]['matched' ]} "
5585 elif 'lines' in findings [0 ]:
56- result_item .set_matched_lines ( f"({ findings [0 ]['lines' ]} )" )
86+ result_item .matched_lines = f"({ findings [0 ]['lines' ]} )"
5787
5888 scanoss_file_item .append (result_item )
5989
0 commit comments