Kantra는 Konveyor의 분석 및 변환 기능을 통합하는 CLI입니다. Linux, Mac 및 Windows에서 사용할 수 있습니다.
전제 조건
설치
설정(Mac 및 Windows에만 해당)
용법
애플리케이션 분석
애플리케이션 또는 XML 규칙 변환
YAML 규칙 테스트
참고자료
행동강령
칸트라를 실행하려면 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 칸트라 다운로드
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 칸트라 다운로드
Windows에서 데스크톱용 Docker를 사용하지 않는 경우(위 참조) 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 칸트라 다운로드
실행 파일을
PATH
에 추가했는지 확인하세요.
Mac 및 Windows에서는 Docker(데스크톱용)를 사용하지 않는 한 명령을 실행하기 전에 podman 머신을 시작해야 합니다.
Podman 머신을 시작하기 전에 다음을 실행하십시오.
ulimit -n 무제한
Podman 머신을 초기화하십시오.
포드맨 4 :
Podman 4를 사용하려면 VM 내에 일부 호스트 디렉터리를 마운트해야 합니다.
podman 머신 초기화 <vm_name> -v $HOME:$HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
포드맨 5 :
Podman 5는 기본적으로 $HOME , /private/tmp 및 /var/folders 디렉토리를 마운트하며 간단히 머신을 초기화합니다.
podman 머신 초기화 <vm_name>
kantra와 함께 사용하려는 입력 및/또는 출력 디렉터리가 $HOME, /private/tmp 및 /var/folders 디렉터리 트리 외부에 있는 경우 기본값 외에 해당 디렉터리를 마운트해야 합니다.
Podman 리소스 늘리기(최소 4G 메모리 필요):
podman 머신 세트 <vm_name> --cpus 4 --memory 4096
기계를 초기화하십시오:
podman 머신 초기화 <vm_name>
Kantra에는 세 가지 하위 명령이 있습니다.
analyze : 이 하위 명령을 사용하면 입력 소스 코드 또는 바이너리에 대해 소스 코드 분석을 실행할 수 있습니다.
변환 : 이 하위 명령을 사용하면 XML 규칙을 YAML로 변환하거나 소스 코드에서 OpenRewrite 레시피를 실행할 수 있습니다.
test : 이 하위 명령을 사용하면 YAML 규칙을 테스트할 수 있습니다.
analyze 하위 명령을 사용하면 analyzer-lsp를 사용하여 소스 코드 및 바이너리 분석을 실행할 수 있습니다.
애플리케이션 소스 코드에 대한 분석을 실행하려면 다음을 실행하세요.
칸트라 분석 --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 명령 실행당 단일 애플리케이션 분석을 지원합니다. 그러나 다양한 애플리케이션에서 여러 kantra analyze 명령을 실행하기 위해 --bulk
옵션을 사용하면 모든 애플리케이션 분석 보고서로 채워진 출력 디렉터리 및 정적 보고서를 얻을 수 있습니다.
예:
kantra analyze --bulk --input=<경로/to/source/A> --output=<path/to/output/ABC>kantra analyze --bulk --input=<path/to/source/B> - -output=<경로/to/output/ABC>kantra analyze --bulk --input=<경로/to/source/C> --output=<path/to/output/ABC>
Transform에는 두 가지 하위 명령이 있습니다.
openrewrite : 이 하위 명령을 사용하면 입력 소스 코드에서 하나 이상의 사용 가능한 OpenRewrite 레시피를 실행할 수 있습니다.
rule : 이 하위 명령을 사용하면 Windup XML 규칙을 analyzer-lsp YAML 형식으로 변환할 수 있습니다.
openrewrite 하위 명령을 사용하면 소스 코드에서 OpenRewrite 레시피를 실행할 수 있습니다.
OpenRewrite를 사용하여 애플리케이션을 변환하려면 다음을 실행하세요.
kantra 변환 openrewrite --input=<경로/대상/소스/코드> --target=<exactly_one_target_from_the_list>
--target 옵션의 값은 사용 가능한 OpenRewrite 레시피 중 하나여야 합니다. 사용 가능한 모든 레시피를 나열하려면 다음을 실행하세요.
칸트라 변환 --list-targets
모든 플래그:
플래그: -g, --goal 문자열 대상 목표(기본값 "dryRun") -h, --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 형식으로 변환하려면 다음을 실행합니다.
칸트라 변환 규칙 --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로 작성된 테스트가 포함된 디렉터리입니다.
칸트라 테스트 /path/to/a/single/tests/file.test.yaml
테스트 결과는 콘솔에 인쇄됩니다.
테스트 실행기 문서에서 테스트 명령을 실행하는 다양한 방법을 확인하세요.
예시 사용 시나리오
공급자 옵션 사용
YAML 규칙에 대한 테스트 실행기
여기에서 Konveyor의 행동 강령을 참조하십시오.