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

Работа с зависимостями

Создание lock и dep-tree файлов

Java

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

Apache Maven:

maven-dependency-tree.txt

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

Gradle:

gradle-dependency-tree.txt

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

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

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

Scala

sbt

scala-dependency-tree.txt или sbt-dependency-tree.txt

Для корректного выполнения композиционного анализа в проектах на Scala с использованием sbt выполните следующие шаги:

  1. Настройка ширины графа зависимостей

    Чтобы сгенерировать полный граф зависимостей добавьте следующую строку в файл build.sbt:

    ThisBuild / asciiGraphWidth := 999999999
    

    Альтернативно, можно установить значение asciiGraphWidth глобально.

  2. Генерация дерева зависимостей

    Выполните следующую команду для генерации дерева зависимостей:

    sbt clean compile "dependencyTree::toFile target/tree.txt"
    

    Убедитесь, что файл сохранен с именем scala-dependency-tree.txt или sbt-dependency-tree.txt, так как только эти имена поддерживаются для корректного парсинга.

  3. Сканирование сгенерированного файла

    Флаг --sbt-resolve в команде сканирования в данном случае не нужен, поскольку выполняется сканирование уже сгенерированного дерева с полной структурой зависимостей.

Golang (Go Modules)

go

go.sum

  1. Инициализируйте модуль (если еще не сделано):
    go mod init <module_name>
    
  2. Установите зависимости:
    go get <package>
    
  3. После установки зависимостей автоматически создаются и обновляются файлы go.mod и go.sum.
  4. Закрепите версии зависимостей:
    go mod tidy
    

Node.js (npm и yarn)

npm

package-lock.json

  1. Инициализируйте проект (если еще не сделано):
    npm init -y
    
  2. Установите зависимости:
    npm install
    

yarn

yarn.lock

  1. Инициализируйте проект:
    yarn init -y
    
  2. Установите зависимости:
    yarn install
    

C# / .NET

NuGet

packages.lock.json

  1. Включите поддержку lock-файла (для .NET 5 и выше):
    dotnet nuget locals all --clear
    
  2. Установите зависимости:
    dotnet restore --use-lock-file
    

paket

paket.lock

  1. Создайте lock-file:
    paket install
    

PHP

Composer

composer.lock

  1. Инициализируйте проект (если еще не сделано):
    composer init
    
  2. Установите зависимости:
    composer install
    

или

Создайте lock-file напрямую:

composer update

Python

pip

requirements.txt

  1. Установите зависимости и сохраните их в lock-файл:
    pip freeze > requirements.txt
    

pipenv

Pipfile.lock

  1. Установите pipenv (если еще не установлен):
    pip install pipenv
    
  2. Создайте Pipfile.lock:
    pipenv install
    

poetry

poetry.lock

Если файл poetry.lock еще не существует, Poetry создаст его автоматически при установке зависимостей. Если файл уже существует, он будет обновлен. Для этого выполните команду:

poetry lock

Эта команда обновит зависимости, указанные в pyproject.toml, и создаст или обновит файл poetry.lock.

Ruby

Bundler

Gemfile.lock

  1. Инициализируйте проект (если еще не сделано):
    bundle init
    
  2. Установите зависимости:
    bundle install
    

или

Создайте lock-file напрямую:

bundle lock