Skip to content

Commit b2a40d2

Browse files
committed
Fix the bug if not generated the src/bin result
Signed-off-by: Jiyeong Seok <[email protected]>
1 parent ded0360 commit b2a40d2

File tree

3 files changed

+72
-59
lines changed

3 files changed

+72
-59
lines changed

src/fosslight_scanner/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def main():
2828
parser.add_argument('--no_correction', help='No correction with sbom-info.yaml',
2929
action='store_true', required=False, default=False)
3030
parser.add_argument('--correct_fpath', help='Path to the sbom-info.yaml',
31-
nargs=1, type=str, required=False, default='')
31+
type=str, required=False, default='')
3232

3333
try:
3434
args = parser.parse_args()
@@ -42,7 +42,7 @@ def main():
4242
else:
4343
run_main(args.mode, args.path, args.dep_argument, args.output, args.file,
4444
args.link, args.db_url, args.timer, args.raw, args.core,
45-
args.no_correction, args.correct_fpath)
45+
not args.no_correction, args.correct_fpath)
4646

4747

4848
if __name__ == "__main__":

src/fosslight_scanner/common.py

Lines changed: 51 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -201,60 +201,66 @@ def merge_yamls(_output_dir, merge_yaml_files, final_report, remove_src_data=Fal
201201
return success, err_msg
202202

203203

204-
def correct_scanner_result(_output_dir, output_files):
204+
def correct_scanner_result(_output_dir, output_files, exist_src, exist_bin):
205205
src_oss_list = []
206206
bin_oss_list = []
207+
duplicates = False
207208

208-
try:
209+
if exist_src:
209210
src_oss_list = check_exclude_dir(get_osslist_with_xlsx(_output_dir, output_files['SRC'], SRC_SHEET))
211+
if exist_bin:
210212
bin_oss_list = check_exclude_dir(get_osslist_with_xlsx(_output_dir, output_files['BIN'], BIN_SHEET))
211213

212-
duplicates = False
213-
dup_bin_list = []
214-
exclude_list = []
215-
for src_item in src_oss_list:
216-
dup_bin = ''
217-
for idx, bin_item in enumerate(bin_oss_list):
218-
if not src_item.source_name_or_path:
219-
continue
220-
if src_item.source_name_or_path[0] == bin_item.source_name_or_path[0]:
221-
dup_bin = copy.deepcopy(bin_item)
222-
if not dup_bin.license:
223-
if dup_bin.exclude:
224-
src_item.exclude = dup_bin.exclude
225-
dup_bin.set_sheet_item(src_item.get_print_array()[0])
226-
if dup_bin.comment:
227-
dup_bin.comment += '/'
228-
dup_bin.comment += 'Loaded from SRC OSS info'
229-
dup_bin_list.append(dup_bin)
230-
exclude_list.append(idx)
231-
if dup_bin:
232-
src_item.exclude = True
233-
if src_item.comment:
234-
src_item.comment += '/'
235-
src_item.comment += 'Excluded by duplicated binary within BIN'
236-
duplicates = True
237-
238-
exclude_list = list(set(exclude_list))
239-
for idx in exclude_list:
240-
bin_oss_list[idx].exclude = True
241-
if bin_oss_list[idx].comment:
242-
bin_oss_list[idx].comment += '/'
243-
bin_oss_list[idx].comment += 'Excluded by SRC OSS info'
244-
bin_oss_list.extend(dup_bin_list)
245-
246-
success, err_msg = write_xlsx_with_osslist(src_oss_list, _output_dir, output_files['SRC'], SRC_SHEET)
247-
if not success:
248-
logger.warning(err_msg)
249-
success, err_msg = write_xlsx_with_osslist(bin_oss_list, _output_dir, output_files['BIN'], BIN_SHEET)
250-
if not success:
251-
logger.warning(err_msg)
214+
if exist_src and exist_bin:
215+
try:
216+
dup_bin_list = []
217+
exclude_list = []
218+
for src_item in src_oss_list:
219+
dup_bin = ''
220+
for idx, bin_item in enumerate(bin_oss_list):
221+
if not src_item.source_name_or_path:
222+
continue
223+
if src_item.source_name_or_path[0] == bin_item.source_name_or_path[0]:
224+
dup_bin = copy.deepcopy(bin_item)
225+
if not dup_bin.license:
226+
if dup_bin.exclude:
227+
src_item.exclude = dup_bin.exclude
228+
dup_bin.set_sheet_item(src_item.get_print_array()[0])
229+
if dup_bin.comment:
230+
dup_bin.comment += '/'
231+
dup_bin.comment += 'Loaded from SRC OSS info'
232+
dup_bin_list.append(dup_bin)
233+
exclude_list.append(idx)
234+
if dup_bin:
235+
src_item.exclude = True
236+
if src_item.comment:
237+
src_item.comment += '/'
238+
src_item.comment += 'Excluded by duplicated binary within BIN'
239+
duplicates = True
240+
241+
exclude_list = list(set(exclude_list))
242+
for idx in exclude_list:
243+
bin_oss_list[idx].exclude = True
244+
if bin_oss_list[idx].comment:
245+
bin_oss_list[idx].comment += '/'
246+
bin_oss_list[idx].comment += 'Excluded by SRC OSS info'
247+
bin_oss_list.extend(dup_bin_list)
248+
except Exception as ex:
249+
logger.warning(f"correct the scanner result:{ex}")
250+
251+
try:
252+
if exist_src:
253+
success, err_msg = write_xlsx_with_osslist(src_oss_list, _output_dir, output_files['SRC'], SRC_SHEET)
254+
if not success:
255+
logger.warning(err_msg)
256+
if exist_bin:
257+
success, err_msg = write_xlsx_with_osslist(bin_oss_list, _output_dir, output_files['BIN'], BIN_SHEET)
258+
if not success:
259+
logger.warning(err_msg)
252260
if duplicates:
253261
logger.info('Success to correct the src/bin scanner result')
254-
255262
except Exception as ex:
256-
logger.warning(f"correct the scanner result:{ex}")
257-
263+
logger.warning(f"Corrected src/bin scanner result:{ex}")
258264
return
259265

260266

src/fosslight_scanner/fosslight_scanner.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,19 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
192192
try:
193193
output_file_without_ext = os.path.join(final_excel_dir, output_file)
194194
final_report = f"{output_file_without_ext}{output_extension}"
195-
tmp_dir = 'tmp'
195+
tmp_dir = f"tmp_{datetime.now().strftime('%y%m%d_%H%M')}"
196+
exist_src = False
197+
exist_bin = False
196198
if correct_mode:
197199
os.makedirs(os.path.join(_output_dir, tmp_dir), exist_ok=True)
198-
shutil.copy2(os.path.join(_output_dir, output_files['SRC']), os.path.join(_output_dir, tmp_dir))
199-
shutil.copy2(os.path.join(_output_dir, output_files['BIN']), os.path.join(_output_dir, tmp_dir))
200-
correct_scanner_result(_output_dir, output_files)
200+
if os.path.exists(os.path.join(_output_dir, output_files['SRC'])):
201+
exist_src = True
202+
shutil.copy2(os.path.join(_output_dir, output_files['SRC']), os.path.join(_output_dir, tmp_dir))
203+
if os.path.exists(os.path.join(_output_dir, output_files['BIN'])):
204+
exist_bin = True
205+
shutil.copy2(os.path.join(_output_dir, output_files['BIN']), os.path.join(_output_dir, tmp_dir))
206+
if exist_src or exist_bin:
207+
correct_scanner_result(_output_dir, output_files, exist_src, exist_bin)
201208
if output_extension == ".xlsx":
202209
if remove_src_data:
203210
overwrite_excel(_output_dir, default_oss_name, "OSS Name")
@@ -208,9 +215,13 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
208215
success, err_msg = merge_yamls(_output_dir, merge_yaml_files, final_report,
209216
remove_src_data, default_oss_name, url)
210217
if correct_mode:
211-
shutil.move(os.path.join(_output_dir, tmp_dir, output_files['SRC']), os.path.join(_output_dir, output_files['SRC']))
212-
shutil.move(os.path.join(_output_dir, tmp_dir, output_files['BIN']), os.path.join(_output_dir, output_files['BIN']))
213-
shutil.rmtree(os.path.join(_output_dir, tmp_dir), ignore_errors=False)
218+
if exist_src:
219+
shutil.move(os.path.join(_output_dir, tmp_dir, output_files['SRC']),
220+
os.path.join(_output_dir, output_files['SRC']))
221+
if exist_bin:
222+
shutil.move(os.path.join(_output_dir, tmp_dir, output_files['BIN']),
223+
os.path.join(_output_dir, output_files['BIN']))
224+
shutil.rmtree(os.path.join(_output_dir, tmp_dir), ignore_errors=True)
214225
if success:
215226
if os.path.isfile(final_report):
216227
result_log["Output File"] = final_report
@@ -282,17 +293,13 @@ def init(output_path="", make_outdir=True):
282293

283294

284295
def run_main(mode, path_arg, dep_arguments, output_file_or_dir, file_format, url_to_analyze, db_url,
285-
hide_progressbar=False, keep_raw_data=False, num_cores=-1, no_correction=False, correct_fpath=""):
296+
hide_progressbar=False, keep_raw_data=False, num_cores=-1, correct_mode=True, correct_fpath=""):
286297
global _executed_path, _start_time
287298

288299
output_file = ""
289300
default_oss_name = ""
290301
src_path = ""
291302
_executed_path = os.getcwd()
292-
correct_mode = True
293-
294-
if no_correction:
295-
correct_mode = False
296303

297304
if mode == "compare":
298305
CUSTOMIZED_FORMAT = {'excel': '.xlsx', 'html': '.html', 'json': '.json', 'yaml': '.yaml'}

0 commit comments

Comments
 (0)