Kantra 是一个 CLI,统一了 Konveyor 的分析和转换功能。它适用于 Linux、Mac 和 Windows。
先决条件
安装
设置(仅适用于 Mac 和 Windows)
用法
分析应用程序
转换应用程序或 XML 规则
测试 YAML 规则
参考
行为守则
运行 kantra 需要Podman 4+ 。默认情况下,它配置为使用主机上可用的 podman 可执行文件。
尽管 kantra 主要使用 podman 进行测试,但可以使用Docker Engine 24+或Docker Desktop 4+作为替代方案。要使用 docker,请设置环境变量CONTAINER_TOOL
指向 docker 可执行文件的路径:
导出 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-坎特拉。 && ${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-坎特拉。 && ${CONTAINER_TOOL:-podman} rm kantra-download
确保将可执行文件添加到
PATH
。
在 Mac 和 Windows 上,需要在运行任何命令之前启动 podman 机器,除非您使用 Docker(适用于桌面):
在启动 podman 机器之前,运行:
ulimit -n 无限
初始化你的 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 机器 init <虚拟机名称>
如果您打算与 kantra 一起使用的输入和/或输出目录位于 $HOME、/private/tmp 和 /var/folders 目录树之外,则除了默认目录之外,您还应该挂载这些目录。
增加podman资源(至少需要4G内存):
podman 机器集 <vm_name> --cpus 4 --内存 4096
初始化机器:
podman 机器 init <虚拟机名称>
Kantra 有三个子命令:
analyze :此子命令允许对输入源代码或二进制文件运行源代码分析。
transform :此子命令允许将 XML 规则转换为 YAML 或在源代码上运行 OpenRewrite 配方。
test :此子命令允许测试 YAML 规则。
分析子命令允许使用analyzer-lsp运行源代码和二进制分析
要对应用程序源代码运行分析,请运行:
kantra 分析 --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 分析命令,以获得输出目录和填充有所有应用程序分析报告的静态报告。
例子:
kantra 分析 --bulk --input=<路径/到/源/A> --output=<路径/到/输出/ABC>kantra 分析 --bulk --input=<路径/到/源/B> - -output=<路径/到/输出/ABC>kantra 分析 --bulk --input=<路径/到/源/C> --output=<路径/到/输出/ABC>
Transform 有两个子命令:
openrewrite :此子命令允许在输入源代码上运行一个或多个可用的 OpenRewrite 配方。
Rules :此子命令允许将 Windup XML 规则转换为analyzer-lsp YAML 格式。
openrewrite子命令允许在源代码上运行 OpenRewrite 配方。
要使用 OpenRewrite 转换应用程序,请运行:
kantra 变换 openrewrite --input=<路径/到/源/代码> --target=<exactly_one_target_from_the_list>
--target选项的值必须是可用的 OpenRewrite 配方之一。要列出所有可用的食谱,请运行:
kantra 变换 --list-targets
所有标志:
标志: -g, --goal 字符串目标目标(默认“dryRun”) -h, --help openrewrite 帮助 -i, --input 应用程序源代码目录的字符串路径 -l, --list-targets 列出所有可用的 OpenRewrite 配方 -s, --maven-settings 要使用的自定义 Maven 设置文件的字符串路径 -t, --target string 要使用的目标 openrewrite 配方。运行 --list-targets 以获取打包食谱的列表。
规则子命令允许使用windup-shim将Windup XML规则转换为analyzer-lsp YAML规则
要将 Windup XML 规则转换为analyzer-lsp YAML 格式,请运行:
kantra 转换规则 --input=<path/to/xmlrules> --output=<path/to/output/dir>
--input标志应指向包含 XML 规则的文件或目录, --output应指向 YAML 规则的输出目录。
所有标志:
标志: -h, --help 规则帮助 -i, --input stringXML 规则文件或目录的数组路径 -o, --output 输出目录的字符串路径
test子命令允许对为分析器-lsp 编写的 YAML 规则运行测试。
测试运行器的输入将是一个或多个测试文件和/或包含用 YAML 编写的测试的目录。
坎特拉测试 /path/to/a/single/tests/file.test.yaml
测试的输出打印在控制台上。
在测试运行器文档中查看运行测试命令的不同方法
使用场景示例
使用提供商选项
YAML 规则的测试运行器
请参阅此处的 Konveyor 行为准则。