Skip to content

Commit 59fe603

Browse files
authored
Comment if no manifest but package manager found (#257)
Signed-off-by: 석지영/책임연구원/SW공학(연)Open Source TP <[email protected]>
1 parent 41ff1ae commit 59fe603

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

src/fosslight_dependency/constant.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,11 @@
4545
CARGO: 'Cargo.toml'
4646
}
4747

48+
SUGGESTED_PACKAGE = {
49+
'Podfile': COCOAPODS,
50+
'Package.swift': SWIFT,
51+
'Cartfile': CARTHAGE
52+
}
53+
4854
# default android app name
4955
default_app_name = 'app'

src/fosslight_dependency/run_dependency_scanner.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def find_package_manager(input_dir, abs_path_to_exclude=[], manifest_file_name=[
6161
manifest_file_name.append(value)
6262

6363
found_manifest_file = []
64+
suggested_files = []
6465
for parent, dirs, files in os.walk(input_dir):
6566
if len(files) < 1:
6667
continue
@@ -76,6 +77,8 @@ def find_package_manager(input_dir, abs_path_to_exclude=[], manifest_file_name=[
7677
continue
7778
if file in manifest_file_name:
7879
found_manifest_file.append(file)
80+
if file in const.SUGGESTED_PACKAGE.keys():
81+
suggested_files.append(os.path.join(parent, file))
7982
for dir in dirs:
8083
for manifest_f in manifest_file_name:
8184
manifest_l = manifest_f.split(os.path.sep)
@@ -111,7 +114,7 @@ def find_package_manager(input_dir, abs_path_to_exclude=[], manifest_file_name=[
111114
ret = False
112115
logger.info("Cannot find the manifest file.")
113116

114-
return ret, found_package_manager, input_dir
117+
return ret, found_package_manager, input_dir, suggested_files
115118

116119

117120
def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='', pip_activate_cmd='',
@@ -213,7 +216,9 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
213216
manifest_file_name = []
214217

215218
try:
216-
ret, found_package_manager, input_dir = find_package_manager(input_dir, abs_path_to_exclude, manifest_file_name)
219+
ret, found_package_manager, input_dir, suggested_files = find_package_manager(input_dir,
220+
abs_path_to_exclude,
221+
manifest_file_name)
217222
if ret:
218223
os.chdir(input_dir)
219224
except Exception as e:
@@ -226,9 +231,18 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
226231
logger.info('Try to analyze dependency without manifest file. (Manual mode)')
227232
found_package_manager[package_manager] = []
228233
else:
229-
logger.error("Terminated: package manager could not be found.")
230234
ret = False
231-
return False, scan_item
235+
if suggested_files:
236+
suggested_files_str = []
237+
suggested_files_str.append("Please check the following files and try again:")
238+
for f in suggested_files:
239+
pm = const.SUGGESTED_PACKAGE[f.split(os.path.sep)[-1]]
240+
suggested_files_str.append(f"\t\t\t{f} ({pm}) detected, but {const.SUPPORT_PACKAE[pm]} missing.")
241+
242+
suggested_files_str.append("\t\t\tRefer: https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html.")
243+
scan_item.set_cover_comment('\n'.join(suggested_files_str))
244+
else:
245+
scan_item.set_cover_comment("No Package manager detected.")
232246

233247
pass_key = 'PASS'
234248
success_pm = []
@@ -264,9 +278,6 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
264278
info_msg = 'Check log file(fosslight_log*.txt) ' \
265279
'and https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html#-prerequisite.'
266280
scan_item.set_cover_comment(f"Analysis failed Package manager: {', '.join(fail_pm)} ({info_msg})")
267-
else:
268-
if autodetect:
269-
scan_item.set_cover_comment("No Package manager detected.")
270281

271282
if ret and graph_path:
272283
graph_path = os.path.abspath(graph_path)
@@ -300,12 +311,14 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
300311
else:
301312
logger.warning(f"{err_msg}")
302313
for i in scan_item.get_cover_comment():
303-
logger.info(i)
314+
if ret:
315+
logger.info(i)
316+
else:
317+
logger.warning(i)
304318
else:
305319
ret = False
306320
logger.error(f"Fail to generate result file. msg:({err_msg})")
307321

308-
logger.warning("### FINISH ###")
309322
return ret, scan_item
310323

311324

0 commit comments

Comments
 (0)