Kantra 是一个 CLI,统一了 Konveyor 的分析和转换功能。它适用于 Linux、Mac 和 Windows。
运行 kantra 需要Podman 4+ 。默认情况下,它配置为使用主机上可用的 podman 可执行文件。
尽管 kantra 主要使用 podman 进行测试,但可以使用Docker Engine 24+或Docker Desktop 4+作为替代方案。要使用 docker,请设置环境变量CONTAINER_TOOL
指向 docker 可执行文件的路径:
export CONTAINER_TOOL=/usr/bin/docker
要安装 kantra,请下载适合您平台的可执行文件并将其添加到路径中。
注意:对于 Mac,您可能会收到“Apple 无法验证”错误消息。如果这样做,您可以运行xattr -d com.apple.quarantine kantra
让 Apple 信任kantra
二进制文件。
转至发布页面并下载包含适用于您的平台和架构的二进制文件的 zip 文件。解压缩存档并将其中的可执行文件添加到路径中。
获取最新(或特定/较旧)可执行文件的最简单方法是从相应的容器映像中获取它。
如果您想获取特定版本,请将 shell 变量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
当您不在 Mac 上使用 Docker for Desktop 时(请参阅上文),您需要在运行任何 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
当您不在 Windows 上使用 Docker for Desktop 时(请参阅上文),您需要在运行任何 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 >
Kantra 有三个子命令:
analyze :此子命令允许对输入源代码或二进制文件运行源代码分析。
transform :此子命令允许将 XML 规则转换为 YAML 或在源代码上运行 OpenRewrite 配方。
test :此子命令允许测试 YAML 规则。
分析子命令允许使用analyzer-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 分析命令,以获得输出目录和填充有所有应用程序分析报告的静态报告。
例子:
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 >
Transform 有两个子命令:
openrewrite :此子命令允许在输入源代码上运行一个或多个可用的 OpenRewrite 配方。
Rules :此子命令允许将 Windup XML 规则转换为analyzer-lsp YAML 格式。
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.
规则子命令允许使用windup-shim将Windup XML规则转换为analyzer-lsp YAML规则
要将 Windup XML 规则转换为analyzer-lsp YAML 格式,请运行:
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子命令允许对为分析器-lsp 编写的 YAML 规则运行测试。
测试运行器的输入将是一个或多个测试文件和/或包含用 YAML 编写的测试的目录。
kantra test /path/to/a/single/tests/file.test.yaml
测试的输出打印在控制台上。
在测试运行器文档中查看运行测试命令的不同方法
请参阅此处的 Konveyor 行为准则。