Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
ScanCode Toolkit
Роль в линейке лицензионных инструментов ScanCode — это детектор, а не решатель. Он отвечает на вопрос «какая лицензия и чьё авторское право найдены в этих файлах», но никогда не выносит вердикт «можно ли с этим выпускаться». Вердикт (concluded) добавляют сверху ORT (политикой) и FOSSology (человеком).
Для чего
Посборочный сканер исходного дерева: построчно ищет в файлах лицензионные тексты и copyright-строки, опознаёт их по эталонной базе и выдаёт по каждому файлу SPDX-выражение с уровнем уверенности и координатами совпадения. В отличие от метаданных пакета (package.json пишет «MIT»), ScanCode видит реальный GPL-хедер внутри одного файла того же пакета.
Как применяют
CLI-утилита на Python. Полное сканирование лицензий с текстом-уликой и классификацией файлов, вывод в машинный JSON:
scancode --version # версию движка фиксируем для воспроизводимости
scancode \
--license --license-text --classify --info \
--processes 4 \
--json-pp scancode-licenses.json \
./vendor
Для прямой выгрузки SBOM движок умеет писать --spdx-tv scancode.spdx (SPDX tag/value), а с опцией --package — --cyclonedx=bom.json (CycloneDX осмыслен только при сканировании пакетов). Ключевые поля результата (скелет одного файла):
{
"headers": [{ "tool_name": "scancode-toolkit", "tool_version": "32.x" }],
"files": [{
"path": "vendor/somelib/parser.c",
"detected_license_expression_spdx": "GPL-2.0-only",
"license_detections": [{
"matches": [{ "score": 99.0, "start_line": 3, "end_line": 18,
"matched_text": "This program is free software..." }]
}]
}]
}
Поле score — уровень уверенности совпадения: значение около 99 означает полный лицензионный текст, низкое (около 50–70) — упоминание лицензии в README/changelog, которое идёт в очередь на ручной просмотр, а не отбрасывается.
Сильные стороны
- Находит лицензию по факту в тексте файла, а не по заявлению в метаданных — ловит «GPL-хедер внутри MIT-пакета», который пропускают генераторы SBOM.
- File-level точность: для каждого совпадения отдаёт строки, фрагмент текста-улики и score — готовый evidence для аудита.
- Эталонная база лицензий и SPDX-выражений входит в поставку; результат детерминирован и воспроизводим при фиксированной версии движка.
- Используется как сканер-движок внутри ORT — то есть это де-факто базовый слой детекции для всей лицензионной цепочки.
Ограничения
- Выдаёт detected, а не concluded: ScanCode не знает вашей политики и не решает, блокер это, условно-допустимо или ложное срабатывание.
- Шум на низких
score: упоминания лицензий в документации дают совпадения, которые надо просеивать руками (--license-score), иначе отчёт раздувается. - Работает по исходному дереву; на минифицированных бандлах и бинарных артефактах с вырезанными хедерами улик нет — сканировать надо исходники.
- Нет ни хранилища решений, ни истории, ни ответственного — для clearing-workflow нужен слой сверху (FOSSology или курации ORT).
Offline / on-premise
Полностью автономен. Это локальная CLI-утилита с базой лицензий в составе пакета; сетевой доступ для сканирования не нужен, что делает её пригодной для закрытого контура. Устанавливается через pip install scancode-toolkit (Python 3.9+); облегчённый scancode-toolkit-mini идёт без полного индекса лицензий — для лицензионного анализа берут полный пакет.
Связанные темы
- Модули: М07 Лицензионная чистота и юридический workflow · М05 Инструменты генерации SBOM
- Практики: П11. ScanCode для лицензий · П26. Лицензионная классификация · П27. Юридическое заключение и реестр лицензий
- Смежные карточки: OSS Review Toolkit · FOSSology · SPDX · Package URL