Перейти к содержанию

Разрешение зависимостей в окружении сборки

Пакетные менеджеры некоторых экосистем по умолчанию не включают транзитивные зависимости в манифесты. Для качественного проведения композиционного анализа при работе с ними рекомендуется применять механизм разрешения зависимостей в окружении сборки.

При разрешении зависимостей в окружении агент проверяет отсутствие lock-файла, самостоятельно запускает пакетный менеджер или инструмент сборки и формирует полный список компонентов с учетом корректной версии сборки. На данный момент функциональность доступна для следующих экосистем:

  • .NET
  • Go
  • Gradle
  • Maven
  • npm
  • Poetry
  • sbt
  • yarn
  • pip
  • Composer
  • pnpm
  • Conda

Параметры разрешения зависимостей в окружении и пути к пакетному менеджеру регулируются следующими флагами в команде scan:

  • --dotnet-resolve / --dotnet-path
  • --go-resolve / --go-path
  • --gradle-resolve / --gradle-path
  • --maven-resolve / --maven-path
  • --npm-resolve / --npm-path
  • --poetry-resolve / --poetry-path
  • --sbt-resolve / --sbt-path
  • --yarn-resolve / --yarn-path
  • --pip-resolve / --pip-path
  • --composer-resolve / --composer-path
  • --pnpm-resolve / --pnpm-path
  • --conda-resolve / --conda-lock-path

Пример команды:

./johnny \
scan dir . \
--api_token <api_token> \
--api_url <api_url> \
--dotnet-resolve true
--dotnet-path <path/to/dotnet>

При необходимости перечисленные параметры можно добавить в конфигурационный файл агента.

Работа с Java

При работе с Java альтернативно можно создать дополнительные артефакты, содержащие полную структуру зависимостей проекта.

Команда для Apache Maven:

mvn dependency:tree -DoutputFile=maven-dependency-tree.txt

Команда для Gradle:

./gradlew dependencies > gradle-dependency-tree.txt

После создания артефактов необходимо применить команду scan file для полученного артефакта, например:

./johnny \
scan file ./maven-dependency-tree.txt \
--api_token <api_token> \
--api_url <api_url>