Kantra は、Konveyor の分析機能と変換機能を統合する CLI です。 Linux、Mac、Windows で利用できます。
kantra を実行するには、 Podman 4+が必要です。デフォルトでは、ホスト上で利用可能な podman 実行可能ファイルを使用するように構成されています。
kantra は主に podman でテストされていますが、代わりにDocker Engine 24+またはDocker Desktop 4+ を使用できます。 docker を使用するには、docker 実行可能ファイルのパスを指す環境変数CONTAINER_TOOL
を設定します。
export CONTAINER_TOOL=/usr/bin/docker
kantra をインストールするには、プラットフォーム用の実行可能ファイルをダウンロードし、パスに追加します。
注: 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
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 では、Docker (デスクトップ用) を使用している場合を除き、コマンドを実行する前に podman マシンを起動する必要があります。
ポッドマン マシンを起動する前に、次のコマンドを実行します。
ulimit -n unlimited
ポッドマン マシンを初期化します。
ポッドマン4 :
Podman 4 では、VM 内にいくつかのホスト ディレクトリをマウントする必要があります。
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 ディレクトリのツリーの外側にある場合は、デフォルトに加えてこれらのディレクトリをマウントする必要があります。
ポッドマン リソースを増やします (最小 4G メモリが必要です)。
podman machine set < vm_name > --cpus 4 --memory 4096
マシンを初期化します。
podman machine init < vm_name >
Kantra には 3 つのサブコマンドがあります。
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 には 2 つのサブコマンドがあります。
openrewrite : このサブコマンドを使用すると、入力ソース コードで 1 つ以上の利用可能な 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 レシピの 1 つである必要があります。利用可能なレシピをすべてリストするには、次を実行します。
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サブコマンドにより、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サブコマンドを使用すると、analyzer-lsp 用に作成された YAML ルールでテストを実行できます。
テスト ランナーへの入力は、YAML で記述されたテストを含む 1 つ以上のテスト ファイルおよび/またはディレクトリになります。
kantra test /path/to/a/single/tests/file.test.yaml
テストの出力はコンソールに出力されます。
テスト ランナーのドキュメントでテスト コマンドを実行するさまざまな方法を参照してください。
Konveyor の行動規範については、こちらを参照してください。