FOSSLight Scanner
FOSSLight Scanner는 로컬 소스코드 또는 입력받은 링크를 통해 소스를 다운로드 받은 후 소스코드, 바이너리 및 디펜던시에 대한 오픈 소스 분석을 수행할 수 있습니다.
오픈 소스 분석을 위해 사용하는 툴은 다음과 같습니다.
- FOSSLight Source Scanner : 소스 코드를 분석하여 오픈 소스 분석 결과를 생성합니다.
- FOSSLight Dependency Scanner : Package manager 또는 빌드 시스템을 통해 사용되는 dependency의 오픈 소스 분석 결과를 생성합니다.
-
FOSSLight Binary Scanner : Binary를 분석하여 오픈 소스 분석 결과를 생성합니다.
Github Repository : https://github.com/fosslight/fosslight_scanner
License : Apache-2.0
목차
📋 필요 조건
- FOSSLight Scanner는 Python 3.8+ 기반에서 동작합니다.
- Jar 파일에 대한 분석을 위해서는 Java를 설치해야 합니다.(Open Source JDK를 설치)
- (windows의 경우) Microsoft Build Tools (Microsoft Visual C++ 14.0+) from https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/ 를 설치해야 합니다.
🎉 설치 방법
FOSSLight Scanner는 pip3를 이용하여 설치할 수 있습니다.
python 3.8 + virtualenv 환경에서 설치할 것을 권장합니다.
$ pip3 install fosslight_scanner
🚀 실행 방법
Mode별 실행 방법 및 Parameters
$ fosslight [Mode] [option1] <arg1> [option2] <arg2>...
Parameters:
Mode: Multiple modes can be entered by separating them with , (ex. source,binary)
all Run all scanners(Default)
source Run FOSSLight Source Scanner
dependency Run FOSSLight Dependency Scanner
binary Run FOSSLight Binary Scanner
compare Compare two FOSSLight reports
Options:
-h Print help message
-p <path> Path to analyze (ex, -p {input_path})
* Compare mode input file: Two FOSSLight reports (supports excel, yaml)
(ex, -p {before_name}.xlsx {after_name}.xlsx)
-w <link> Link to be analyzed can be downloaded by wget or git clone
-f <formats> [<format> ...] FOSSLight Report file format (excel, csv, opossum, yaml, spdx-tag, spdx-yaml, spdx-json, spdx-xml)
* Compare mode result file: supports excel, json, yaml, html
* Multiple formats can be specified separated by space.
-e <path> Path to exclude from analysis (ex, -e {dir} {file})
-o <output> Output directory or file
-c <number> Number of processes to analyze source
-r Keep raw data
-t Hide the progress bar
-v Print FOSSLight Scanner version
-s <path> Path to apply setting from file (check format with 'setting.json' in this repository)
* Direct cli flags have higher priority than setting file
(ex, '-f yaml -s setting.json' - result file extension is .yaml)
--no_correction Enter if you don't want to correct OSS information with sbom-info.yaml
* Correction mode only supported xlsx format.
--correct_fpath <path> Path to the sbom-info.yaml file
--ui Generate UI mode result file
Options for only 'all' or 'bin' mode
-u <db_url> DB Connection(format :'postgresql://username:password@host:port/database_name')
Options for only 'all' or 'dependency' mode
-d <dependency_argument> Additional arguments for running dependency analysis
- -d 옵션은 FOSSLight Dependency 실행시 argument 입력이 필요한 경우만 입력합니다.참고
Ex.1 Local의 Path를 분석하는 방법
fosslight all -p /home/source_path
Ex.2 링크를 다운로드 받고 분석하는 방법
fosslight all -o test_result_wget -w "https://github.com/LGE-OSS/example.git"
Ex.3 FOSSLight Report BOM 결과 비교하여 변경/추가/삭제 내역 확인하는 방법
fosslight compare -p FOSSLight_before_proj.yaml FOSSLight_after_proj.yaml -o test_result
실행 Parameter를 json으로 저장하여 호출하는 방법
- setting.json 포맷으로 실행 parameter별 값을 json 파일로 작성하여 저장
- 실행시, -s 로 생성한 setting.json을 호출합니다.
fosslight -s setting.json
🛈 json 파일에 작성한 parameter보다 실행시 호출한 값을 우선합니다.
ex. ‘-f yaml -s setting.json'로 호출시, yaml 포맷의 output을 출력합니다.
📁 결과
오픈소스 분석 모드 결과 (all, source, dependency, binary)
test_result/
├── fosslight_log
│ └── fosslight_log_220214_1824.txt
├── fosslight_report_all_220214_1824.xlsx
└── fosslight_raw_data (-r option 있는 경우)
├── fosslight_src_220214_1824.xlsx
├── fosslight_bin_220214_1824.xlsx
└── fosslight_dep_220214_1824.xlsx
- fosslight_report_(datetime).xlsx : Source 분석, Binary 분석, Dependency 분석 결과가 작성된 FOSSLight Report 형식의 파일
- fosslight_raw_data directory: 분석 결과 Raw Data 파일이 생성되는 폴더 (-r option 있는 경우)
- fosslight_src_(datetime).xlsx : Source 분석 결과 파일
- fosslight_dep_(datetime).xlsx : Dependency 분석 결과 파일
- fosslight_bin_(datetime).xlsx : Binary 분석 결과 파일
fosslight_report_(datetime).xlsx
- Exclude : 체크된 Row test(s), doc(s), 숨김 파일 or 폴더는 Exclude 체크됩니다.
- sbom-info.yaml을 load한 경우, load한 데이터를 append하고 중복된 파일에 대한 분석 결과는 Exclude 체크됩니다.
- Comment란 :
Add/Loaded by ** : ** 으로부터 load한 Row
Excluded by ** : ** 으로 인해 Exclude된 Row
compare 모드 결과
test_result/
├── fosslight_log
│ └── fosslight_log_20220817_114259.txt
└── fosslight_compare_20220817_114259.xlsx
- fosslight_compare_(datetime).xlsx : 두 개의 BOM 비교 결과가 (add/delete/change) 테이블 양식으로 작성된 파일
🐳 Docker를 이용하여 설치 및 실행 방법
- Dockerfile을 이용하여 이미지 빌드
$docker build -t fosslight .
- 빌드한 이미지로 실행합니다.
ex. Output 경로 : /Users/fosslight_scanner/test_output, 분석 경로 : tests/test_files$docker run -it -v /Users/fosslight_scanner/test_output:/app/output fosslight -p tests/test_files -o output