Skip to main content

Scancode

Giới thiệu

Scancode là một phần của tổ chức Open Source Initiative (OSI) và thường được sử dụng để quét và phân tích các thành phần mã nguồn mở trong một dự án. Công cụ này hoạt động bằng cách quét mã nguồn và xác định các giấy phép sử dụng trong các tệp mã nguồn (bao gồm text, ảnh, âm thanh,…) phân tích thành phần phần mềm và quản lý giấy phép, giúp doanh nghiệp và nhà phát triển xác định rõ nguồn gốc và giấy phép của mã nguồn.

Các tính năng chính của Scancode bao gồm:

  • Phân tích và Quét Tự động: Scancode tự động quét và phân tích mã nguồn mở để xác định giấy phép và nguồn gốc.
  • Nhận Diện Giấy phép: Công cụ này có khả năng xác định các loại giấy phép phổ biến và hiển thị thông tin chi tiết về mỗi giấy phép.
  • Tương thích OSI: Scancode được xây dựng dựa trên danh sách các giấy phép được chấp thuận bởi Open Source Initiative, giúp đảm bảo tính nhất quán và chuẩn mực.
  • Báo Cáo Chi Tiết: Kết quả quét được hiển thị trong các báo cáo chi tiết với các thông tin về giấy phép, tên tác giả, nguồn gốc và nhiều thông tin quan trọng khác.
  • Tùy chỉnh và Mở rộng: Scancode cho phép tùy chỉnh cấu hình để đáp ứng các yêu cầu cụ thể của dự án và môi trường.

Với Scancode, tổ chức có khả năng quản lý giấy phép và đảm bảo tính bảo mật trong quá trình phát triển và sử dụng phần mềm mã nguồn mở. Công cụ này đóng vai trò quan trọng trong việc giám sát và tuân thủ các quy định về giấy phép và quản lý rủi ro liên quan đến việc sử dụng các thành phần phần mềm bên ngoài.

Tích hợp với Gitlab CI

Tạo request cấp phát CICD trước nếu project chưa sử dụng quy trình CICD. https://jira8.runsystem.info/plugins/servlet/desk/portal/1/create/470

Cấu hình file .gitlab-ci.yml cho scancode:

stages:
- license-scancode

license-scancode:
stage: license-scancode
image: gianlucadb0/scancode-toolkit
script:
- scancode -clpeui -n 4 --cyclonedx results-cyclonedx --spdx-tv results-spdx --json-pp results.json --html result.html ./
allow_failure: true
artifacts:
when: always # or 'on_failure'
paths:
- results-cyclonedx
- results-spdx
- results.json
expire_in: 1 week

Truy cập kết quả quét

Nếu project không có thư viện, phần phụ thuộc của thư viện hay bất cứ file nào (text, ảnh, âm thanh, …) của dự án sử dụng các giấy phép phi thương mại, giấy phép độc quyền kết quả sẽ trả ra không có lỗi.

Kết quả của scancode gồm các file spdx, json có thể được download tại: CD/CD → Jobs

Đọc kết quả

Nếu kết quả sau khi quét có Errors count : 0 → project không chứa bất kỳ tệp, hay thư viện nào vi phạm, hay cần bản quyền để sử dụng. → Pass.

Nếu kết quả có Errors count != 0 , cần download artifacts (kết quả quét) của scancode stage để kiểm tra chi tiết hơn về file hay thư viện vi phạm bản quyền. (ảnh phía trên). Sau khi download kết quả quét, mở file results-spdx (giải nén từ artifact scancode.zip của pipeline). Trong mục properties, có thể nhìn thấy các mức độ cảnh báo đối với từng file bản quyền với mức độ error và warning. (chi tiết đường dẫn file và bản quyền chứa trong mục value).