Kantra — это интерфейс командной строки, который объединяет возможности анализа и преобразования Konveyor. Он доступен для Linux, Mac и Windows.
Предварительные условия
Установка
Настройка (только для Mac и Windows)
Использование
Анализ приложения
Преобразование приложения или правил XML
Тестирование правил YAML
Ссылки
Нормы поведения
Для запуска кантры требуется Podman 4+ . По умолчанию он настроен на использование исполняемого файла podman, доступного на хосте.
Хотя kantra в основном тестируется с помощью podman, в качестве альтернативы можно использовать Docker Engine 24+ или Docker Desktop 4+ . Чтобы использовать Docker, установите переменную среды CONTAINER_TOOL
указывающую путь к исполняемому файлу Docker:
экспорт CONTAINER_TOOL=/usr/bin/docker
Чтобы установить кантру, загрузите исполняемый файл для своей платформы и добавьте его в путь.
Примечание. На Mac может появиться сообщение об ошибке «Apple не удалось проверить». Если вы это сделаете, вы можете запустить xattr -d com.apple.quarantine kantra
, чтобы Apple доверяла двоичному файлу kantra
.
Перейдите на страницу выпуска и загрузите zip-файл, содержащий двоичный файл для вашей платформы и архитектуры. Разархивируйте архив и добавьте в него исполняемый файл по пути.
Самый простой способ получить последний (или конкретный/более старый) исполняемый файл — получить его из соответствующего образа контейнера.
Установите для переменной оболочки kantra_version
определенную версию, если вы хотите получить эту версию, например, kantra_version=v0.4.0
.
Бегать:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/kantra . && ${CONTAINER_TOOL:-podman} rm kantra-download
Если вы не используете Docker for Desktop на своем Mac (см. выше), вам необходимо запустить компьютер podman перед выполнением любых команд podman (см. «Настройка для Mac»).
После запуска машины запустите:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/darwin- кантра. && ${CONTAINER_TOOL:-podman} rm kantra-download
Если вы не используете Docker for Desktop в своей Windows (см. выше), вам необходимо запустить компьютер podman перед выполнением любых команд podman (см. Настройка для Windows).
После запуска машины запустите:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/windows- кантра. && ${CONTAINER_TOOL:-podman} rm kantra-download
Убедитесь, что вы добавили исполняемый файл в
PATH
.
На Mac и Windows перед выполнением каких-либо команд необходимо запустить машину podman, если только вы не используете Docker (для рабочего стола):
Прежде чем запустить машину podman, запустите:
ulimit -n неограниченно
Запустите вашу машину podman:
Подман 4 :
Podman 4 требует, чтобы некоторые каталоги хоста были смонтированы внутри виртуальной машины:
машина podman init <имя_vm> -v $HOME:$HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
Подман 5 :
Podman 5 по умолчанию монтирует каталоги $HOME , /private/tmp и /var/folders , просто запустите машину:
инициализация машины podman <имя_vm>
Если входные и/или выходные каталоги, которые вы собираетесь использовать с kantra, находятся за пределами дерева каталогов $HOME, /private/tmp и /var/folders, вам следует смонтировать эти каталоги в дополнение к каталогам по умолчанию.
Увеличьте ресурсы podman (требуется минимум 4G памяти):
набор компьютеров podman <vm_name> --cpus 4 --memory 4096
Запустите машину:
инициализация машины podman <имя_vm>
Кантра имеет три подкоманды:
анализ : Эта подкоманда позволяет выполнить анализ исходного кода входного исходного кода или двоичного файла.
Transform : эта подкоманда позволяет либо конвертировать правила XML в YAML, либо запускать рецепты OpenRewrite в исходном коде.
test : эта подкоманда позволяет тестировать правила YAML.
Подкоманда анализа позволяет запускать исходный код и бинарный анализ с помощью анализатора-lsp.
Чтобы запустить анализ исходного кода приложения, выполните:
kantra Analysis --input=<путь/к/источнику/коду> --output=<путь/к/выходному/каталогу>
--input должен указывать на каталог исходного кода или двоичный файл, --output должен указывать на каталог, в котором будут храниться результаты анализа.
Все флаги:
Flags: --analyze-known-libraries analyze known open-source libraries --bulk running multiple analyze commands in bulk will result to combined static report --context-lines int number of lines of source code to include in the output for each incident (default 100) -d, --dependency-folders stringArray directory for dependencies --enable-default-rulesets run default rulesets with analysis (default true) -h, --help help for analyze --http-proxy string HTTP proxy string URL --https-proxy string HTTPS proxy string URL --incident-selector string an expression to select incidents based on custom variables. ex: (!package=io.konveyor.demo.config-utils) -i, --input string path to application source code or a binary --jaeger-endpoint string jaeger endpoint to collect traces --json-output create analysis and dependency output as json -l, --label-selector string run rules based on specified label selector expression --list-sources list rules for available migration sources --list-targets list rules for available migration targets --maven-settings string path to a custom maven settings file to use -m, --mode string analysis mode. Must be one of 'full' or 'source-only' (default "full") --no-proxy string proxy excluded URLs (relevant only with proxy) -o, --output string path to the directory for analysis output --overwrite overwrite output directory --rules stringArray filename or directory containing rule files. Use multiple times for additional rules: --rules <rule1> --rules <rule2> ... --skip-static-report do not generate static report -s, --source stringArray source technology to consider for analysis. Use multiple times for additional sources: --source <source1> --source <source2> ... -t, --target stringArray target technology to consider for analysis. Use multiple times for additional targets: --target <target1> --target <target2> ...
По задумке kantra поддерживает анализ одного приложения для каждого выполнения команды kantra. Однако можно использовать опцию --bulk
для выполнения нескольких команд анализа кантры с разными приложениями, чтобы получить выходной каталог и статический отчет, заполненный отчетами об анализе всех приложений.
Пример:
kantra Analysis --bulk --input=<путь/к/источнику/A> --output=<путь/к/выходу/ABC>kantra Analysis --bulk --input=<путь/к/источнику/B> - -output=<путь/к/выходу/ABC>kantra Analysis --bulk --input=<путь/к/источнику/C> --output=<путь/к/выходу/ABC>
Преобразование имеет две подкоманды:
openrewrite : эта подкоманда позволяет запустить один или несколько доступных рецептов OpenRewrite для входного исходного кода.
Rules : эта подкоманда позволяет конвертировать XML-правила Windup в формат YAML анализатора-lsp.
Подкоманда openrewrite позволяет запускать рецепты OpenRewrite в исходном коде.
Чтобы преобразовать приложения с помощью OpenRewrite, запустите:
kantra Transform openrewrite --input=<путь/к/источнику/коду> --target=<exactly_one_target_from_the_list>
Значение опции --target должно быть одним из доступных рецептов OpenRewrite. Чтобы просмотреть все доступные рецепты, запустите:
преобразование кантры --list-targets
Все флаги:
Флаги: -g, --goal string целевая цель (по умолчанию «dryRun») -h, --help помощь по openrewrite -i, --input строка путь к каталогу исходного кода приложения -l, --list-targets выводит список всех доступных рецептов OpenRewrite. -s, --maven-settings строковый путь к пользовательскому файлу настроек maven, который будет использоваться -t, --target string целевой рецепт openrewrite, который нужно использовать. Запустите --list-targets, чтобы получить список упакованных рецептов.
Подкоманда Rules позволяет конвертировать XML-правила Windup в YAML-правила анализатора-lsp с помощью Windup-Shim.
Чтобы преобразовать XML-правила Windup в формат YAML анализатора-lsp, запустите:
правила преобразования кантры --input=<путь/к/xmlrules> --output=<путь/к/выходному/каталогу>
Флаг --input должен указывать на файл или каталог, содержащий правила XML, --output должен указывать на выходной каталог для правил YAML.
Все флаги:
Флаги: -h, --help помощь по правилам -i, --input stringArray путь к файлу(ам) или каталогу правил XML -o, --output string путь к выходному каталогу
Подкоманда test позволяет запускать тесты правил YAML, написанных для анализатора-lsp.
Входными данными для запуска тестов будут один или несколько тестовых файлов и/или каталогов, содержащих тесты, написанные в YAML.
тест кантры /путь/к/a/single/tests/file.test.yaml
Вывод тестов выводится на консоль.
См. различные способы запуска тестовой команды в документации по запуску тестов.
Примеры сценариев использования
Использование опций провайдера
Средство запуска тестов для правил YAML
См. Кодекс поведения компании Konveyor здесь.