Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин 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, которое идёт в очередь на ручной просмотр, а не отбрасывается.

Сильные стороны

Ограничения

Offline / on-premise

Полностью автономен. Это локальная CLI-утилита с базой лицензий в составе пакета; сетевой доступ для сканирования не нужен, что делает её пригодной для закрытого контура. Устанавливается через pip install scancode-toolkit (Python 3.9+); облегчённый scancode-toolkit-mini идёт без полного индекса лицензий — для лицензионного анализа берут полный пакет.

Связанные темы