Kantra — это интерфейс командной строки, который объединяет возможности анализа и преобразования Konveyor. Он доступен для Linux, Mac и Windows.
Для запуска кантры требуется Podman 4+ . По умолчанию он настроен на использование исполняемого файла podman, доступного на хосте.
Хотя kantra в основном тестируется с помощью podman, в качестве альтернативы можно использовать Docker Engine 24+ или Docker Desktop 4+ . Чтобы использовать Docker, установите переменную среды CONTAINER_TOOL
указывающую путь к исполняемому файлу Docker:
export 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-kantra . && ${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-kantra . && ${CONTAINER_TOOL :- podman} rm kantra-download
Убедитесь, что вы добавили исполняемый файл в
PATH
.
На Mac и Windows перед выполнением каких-либо команд необходимо запустить машину podman, если вы не используете Docker (для рабочего стола):
Прежде чем запустить машину podman, запустите:
ulimit -n unlimited
Запустите вашу машину podman:
Подман 4 :
Podman 4 требует, чтобы некоторые каталоги хоста были смонтированы внутри виртуальной машины:
podman machine init < vm_name > -v $HOME : $HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
Подман 5 :
Podman 5 по умолчанию монтирует каталоги $HOME , /private/tmp и /var/folders , просто запустите машину:
podman machine init < vm_name >
Если входные и/или выходные каталоги, которые вы собираетесь использовать с kantra, находятся за пределами дерева каталогов $HOME, /private/tmp и /var/folders, вам следует смонтировать эти каталоги в дополнение к каталогам по умолчанию.
Увеличьте ресурсы podman (требуется минимум 4G памяти):
podman machine set < vm_name > --cpus 4 --memory 4096
Запустите машину:
podman machine init < vm_name >
Кантра имеет три подкоманды:
анализ : Эта подкоманда позволяет выполнить анализ исходного кода входного исходного кода или двоичного файла.
Transform : эта подкоманда позволяет либо конвертировать правила XML в YAML, либо запускать рецепты OpenRewrite в исходном коде.
test : эта подкоманда позволяет тестировать правила YAML.
Подкоманда анализа позволяет запускать исходный код и двоичный анализ с помощью анализатора-lsp.
Чтобы запустить анализ исходного кода приложения, выполните:
kantra analyze --input= < path/to/source/code > --output= < path/to/output/dir >
--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 --rules ...
--skip-static-report do not generate static report
-s, --source stringArray source technology to consider for analysis. Use multiple times for additional sources: --source --source ...
-t, --target stringArray target technology to consider for analysis. Use multiple times for additional targets: --target --target ...
По задумке kantra поддерживает анализ одного приложения для каждого выполнения команды kantra. Однако можно использовать опцию --bulk
для выполнения нескольких команд анализа кантры с разными приложениями, чтобы получить выходной каталог и статический отчет, заполненный отчетами об анализе всех приложений.
Пример:
kantra analyze --bulk --input= < path/to/source/A > --output= < path/to/output/ABC >
kantra analyze --bulk --input= < path/to/source/B > --output= < path/to/output/ABC >
kantra analyze --bulk --input= < path/to/source/C > --output= < path/to/output/ABC >
Преобразование имеет две подкоманды:
openrewrite : эта подкоманда позволяет запустить один или несколько доступных рецептов OpenRewrite для входного исходного кода.
Rules : эта подкоманда позволяет конвертировать XML-правила Windup в формат YAML анализатора-lsp.
Подкоманда openrewrite позволяет запускать рецепты OpenRewrite в исходном коде.
Чтобы преобразовать приложения с помощью OpenRewrite, запустите:
kantra transform openrewrite --input= < path/to/source/code > --target= < exactly_one_target_from_the_list >
Значение опции --target должно быть одним из доступных рецептов OpenRewrite. Чтобы просмотреть все доступные рецепты, запустите:
kantra transform --list-targets
Все флаги:
Flags:
-g, --goal string target goal (default " dryRun " )
-h, --help help for openrewrite
-i, --input string path to application source code directory
-l, --list-targets list all available OpenRewrite recipes
-s, --maven-settings string path to a custom maven settings file to use
-t, --target string target openrewrite recipe to use. Run --list-targets to get a list of packaged recipes.
Подкоманда Rules позволяет конвертировать XML-правила Windup в YAML-правила анализатора-lsp с помощью Windup-Shim.
Чтобы преобразовать XML-правила Windup в формат YAML анализатора-lsp, запустите:
kantra transform rules --input= < path/to/xmlrules > --output= < path/to/output/dir >
Флаг --input должен указывать на файл или каталог, содержащий правила XML, --output должен указывать на выходной каталог для правил YAML.
Все флаги:
Flags:
-h, --help help for rules
-i, --input stringArray path to XML rule file(s) or directory
-o, --output string path to output directory
Подкоманда test позволяет запускать тесты правил YAML, написанных для анализатора-lsp.
Входными данными для запуска тестов будут один или несколько тестовых файлов и/или каталогов, содержащих тесты, написанные в YAML.
kantra test /path/to/a/single/tests/file.test.yaml
Вывод тестов выводится на консоль.
См. различные способы запуска тестовой команды в документации по запуску тестов.
См. Кодекс поведения компании Konveyor здесь.