Kantra ist eine CLI, die die Analyse- und Transformationsfunktionen von Konveyor vereint. Es ist für Linux, Mac und Windows verfügbar.
Zum Ausführen von Kantra ist Podman 4+ erforderlich. Standardmäßig ist es für die Verwendung der auf dem Host verfügbaren ausführbaren Podman-Datei konfiguriert.
Obwohl Kantra hauptsächlich mit Podman getestet wird, können alternativ Docker Engine 24+ oder Docker Desktop 4+ verwendet werden. Um Docker zu verwenden, legen Sie die Umgebungsvariable CONTAINER_TOOL
fest, die auf den Pfad der ausführbaren Docker-Datei verweist:
export CONTAINER_TOOL=/usr/bin/docker
Um Kantra zu installieren, laden Sie die ausführbare Datei für Ihre Plattform herunter und fügen Sie sie dem Pfad hinzu.
Hinweis: Bei Mac erhalten Sie möglicherweise die Fehlermeldung „Apple konnte die Überprüfung nicht durchführen“. Wenn Sie dies tun, können Sie xattr -d com.apple.quarantine kantra
ausführen, damit Apple der kantra
Binärdatei vertraut.
Gehen Sie zur Release-Seite und laden Sie die ZIP-Datei herunter, die eine Binärdatei für Ihre Plattform und Architektur enthält. Entpacken Sie das Archiv und fügen Sie die darin enthaltene ausführbare Datei zum Pfad hinzu.
Der einfachste Weg, die neueste (oder eine bestimmte/ältere) ausführbare Datei abzurufen, besteht darin, sie aus dem entsprechenden Container-Image abzurufen.
Setzen Sie die Shell-Variable kantra_version
auf eine bestimmte Version, wenn Sie diese Version abrufen möchten, z. B. kantra_version=v0.4.0
.
Laufen:
${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
Wenn Sie Docker für Desktop nicht auf Ihrem Mac verwenden (siehe oben), müssen Sie einen Podman-Computer starten, bevor Sie Podman-Befehle ausführen (siehe Setup für Mac).
Sobald eine Maschine gestartet ist, führen Sie Folgendes aus:
${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
Wenn Sie Docker für Desktop nicht unter Windows verwenden (siehe oben), müssen Sie einen Podman-Computer starten, bevor Sie Podman-Befehle ausführen (siehe Setup für Windows).
Sobald eine Maschine gestartet ist, führen Sie Folgendes aus:
${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
Stellen Sie sicher, dass Sie die ausführbare Datei zum
PATH
hinzufügen.
Auf Mac und Windows muss ein Podman-Computer gestartet werden, bevor Befehle ausgeführt werden, es sei denn, Sie verwenden Docker (für Desktop):
Führen Sie vor dem Starten Ihrer Podman-Maschine Folgendes aus:
ulimit -n unlimited
Initialisieren Sie Ihre Podman-Maschine:
Podman 4 :
Für Podman 4 müssen einige Hostverzeichnisse innerhalb der VM gemountet werden:
podman machine init < vm_name > -v $HOME : $HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
Podman 5 :
Podman 5 mountet standardmäßig die Verzeichnisse $HOME , /private/tmp und /var/folders , initialisieren Sie einfach die Maschine:
podman machine init < vm_name >
Wenn die Eingabe- und/oder Ausgabeverzeichnisse, die Sie mit Kantra verwenden möchten, außerhalb der Baumstruktur der Verzeichnisse $HOME, /private/tmp und /var/folders liegen, sollten Sie diese Verzeichnisse zusätzlich zum Standard bereitstellen.
Podman-Ressourcen erhöhen (mindestens 4G-Speicher erforderlich):
podman machine set < vm_name > --cpus 4 --memory 4096
Initialisieren Sie die Maschine:
podman machine init < vm_name >
Kantra hat drei Unterbefehle:
analysieren : Dieser Unterbefehl ermöglicht die Ausführung einer Quellcodeanalyse für den Eingabequellcode oder eine Binärdatei.
transform : Dieser Unterbefehl ermöglicht entweder die Konvertierung von XML-Regeln in YAML oder die Ausführung von OpenRewrite-Rezepten für den Quellcode.
test : Dieser Unterbefehl ermöglicht das Testen von YAML-Regeln.
Der Unterbefehl „analysieren “ ermöglicht die Ausführung von Quellcode und Binäranalyse mit „analysator-lsp“.
Führen Sie Folgendes aus, um eine Analyse des Anwendungsquellcodes durchzuführen:
kantra analyze --input= < path/to/source/code > --output= < path/to/output/dir >
--input muss auf ein Quellcodeverzeichnis oder eine Binärdatei verweisen, --output muss auf ein Verzeichnis verweisen, das Analyseergebnisse enthält.
Alle Flaggen:
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 unterstützt konstruktionsbedingt die Einzelanwendungsanalyse pro Kantra-Befehlsausführung. Es ist jedoch möglich, die Option --bulk
zum Ausführen mehrerer Kantra-Analysebefehle mit unterschiedlichen Anwendungen zu verwenden, um ein Ausgabeverzeichnis und einen statischen Bericht zu erhalten, der mit allen Anwendungsanalyseberichten gefüllt ist.
Beispiel:
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 hat zwei Unterbefehle:
openrewrite : Dieser Unterbefehl ermöglicht die Ausführung eines oder mehrerer verfügbarer OpenRewrite-Rezepte für den Eingabequellcode.
Regeln : Dieser Unterbefehl ermöglicht die Konvertierung von Windup-XML-Regeln in das YAML-Format „analysator-lsp“.
Der Unterbefehl openrewrite ermöglicht die Ausführung von OpenRewrite-Rezepten für den Quellcode.
Führen Sie Folgendes aus, um Anwendungen mit OpenRewrite zu transformieren:
kantra transform openrewrite --input= < path/to/source/code > --target= < exactly_one_target_from_the_list >
Der Wert der Option --target muss eines der verfügbaren OpenRewrite-Rezepte sein. Um alle verfügbaren Rezepte aufzulisten, führen Sie Folgendes aus:
kantra transform --list-targets
Alle Flaggen:
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.
Der Unterbefehl „rules“ ermöglicht die Konvertierung von Windup-XML-Regeln in „analyzer-lsp“-YAML-Regeln mithilfe von „windup-shim“.
Führen Sie Folgendes aus, um Windup-XML-Regeln in das YAML-Format „analysator-lsp“ zu konvertieren:
kantra transform rules --input= < path/to/xmlrules > --output= < path/to/output/dir >
Das Flag --input sollte auf eine Datei oder ein Verzeichnis mit XML-Regeln verweisen, --output sollte auf ein Ausgabeverzeichnis für YAML-Regeln verweisen.
Alle Flaggen:
Flags:
-h, --help help for rules
-i, --input stringArray path to XML rule file(s) or directory
-o, --output string path to output directory
Der Unterbefehl „test “ ermöglicht das Ausführen von Tests für YAML-Regeln, die für „analysator-lsp“ geschrieben wurden.
Die Eingabe für Test Runner besteht aus einer oder mehreren Testdateien und/oder Verzeichnissen, die in YAML geschriebene Tests enthalten.
kantra test /path/to/a/single/tests/file.test.yaml
Die Ausgabe der Tests wird auf der Konsole gedruckt.
Verschiedene Möglichkeiten zum Ausführen des Testbefehls finden Sie im Test Runner-Dokument
Den Verhaltenskodex von Konveyor finden Sie hier.