Kantra は、Konveyor の分析機能と変換機能を統合する CLI です。 Linux、Mac、Windows で利用できます。
前提条件
インストール
セットアップ (Mac および Windows のみ)
使用法
アプリケーションを分析する
アプリケーションまたは XML ルールを変換する
YAML ルールをテストする
参考文献
行動規範
kantra を実行するには、 Podman 4+が必要です。デフォルトでは、ホスト上で利用可能な podman 実行可能ファイルを使用するように構成されています。
kantra は主に podman でテストされていますが、代わりにDocker Engine 24+またはDocker Desktop 4+ を使用できます。 docker を使用するには、docker 実行可能ファイルのパスを指す環境変数CONTAINER_TOOL
を設定します。
エクスポート 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-カントラ 。 && ${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 では、Docker (デスクトップ用) を使用している場合を除き、コマンドを実行する前に podman マシンを起動する必要があります。
ポッドマン マシンを起動する前に、次のコマンドを実行します。
ulimit -n 無制限
ポッドマン マシンを初期化します。
ポッドマン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ディレクトリをマウントします。単純にマシンを初期化します。
ポッドマン マシンの初期化 <vm_name>
kantra で使用する予定の入力ディレクトリや出力ディレクトリが $HOME、/private/tmp、および /var/folders ディレクトリのツリーの外側にある場合は、デフォルトに加えてこれらのディレクトリをマウントする必要があります。
ポッドマン リソースを増やします (最小 4G メモリが必要です)。
ポッドマン マシン セット <vm_name> --cpus 4 --memory 4096
マシンを初期化します。
ポッドマン マシンの初期化 <vm_name>
Kantra には 3 つのサブコマンドがあります。
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 分析コマンドを実行し、出力ディレクトリとすべてのアプリケーション分析レポートが入力された静的レポートを取得することができます。
例:
kantraanalyze --bulk --input=<path/to/source/A> --output=<path/to/output/ABC>kantraanalyze --bulk --input=<path/to/source/B> - -output=<パス/to/output/ABC>kantraanalyze --bulk --input=<パス/to/source/C> --output=<パス/to/output/ABC>
Transform には 2 つのサブコマンドがあります。
openrewrite : このサブコマンドを使用すると、入力ソース コードで 1 つ以上の利用可能な OpenRewrite レシピを実行できます。
rules : このサブコマンドを使用すると、Windup XML ルールを Analyzer-lsp YAML 形式に変換できます。
openrewriteサブコマンドを使用すると、ソース コードで OpenRewrite レシピを実行できます。
OpenRewrite を使用してアプリケーションを変換するには、次を実行します。
kantra 変換 openrewrite --input=<path/to/source/code> --target=<exactly_one_target_from_the_list>
--targetオプションの値は、利用可能な OpenRewrite レシピの 1 つである必要があります。利用可能なレシピをすべてリストするには、次を実行します。
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 を実行して、パッケージ化されたレシピのリストを取得します。
rulesサブコマンドにより、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 XML ルール ファイルまたはディレクトリへの stringArray パス -o, --output 出力ディレクトリへの文字列パス
testサブコマンドを使用すると、analyzer-lsp 用に作成された YAML ルールでテストを実行できます。
テスト ランナーへの入力は、YAML で記述されたテストを含む 1 つ以上のテスト ファイルおよび/またはディレクトリになります。
カントラテスト /path/to/a/single/tests/file.test.yaml
テストの出力はコンソールに出力されます。
テスト ランナーのドキュメントでテスト コマンドを実行するさまざまな方法を参照してください。
使用シナリオの例
プロバイダーオプションの使用
YAML ルールのテストランナー
Konveyor の行動規範については、こちらを参照してください。