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 行為準則。