Kantra เป็น CLI ที่รวบรวมความสามารถในการวิเคราะห์และการเปลี่ยนแปลงของ Konveyor มันสามารถใช้ได้สำหรับ Linux, Mac และ Windows
ต้องใช้ Podman 4+ เพื่อเรียกใช้ kantra ตามค่าเริ่มต้น จะมีการกำหนดค่าให้ใช้ไฟล์ปฏิบัติการ podman ที่มีอยู่ในโฮสต์
แม้ว่า kantra จะได้รับการทดสอบกับ podman เป็นหลัก แต่ก็สามารถใช้ Docker Engine 24+ หรือ Docker Desktop 4+ เป็นทางเลือกแทนได้ หากต้องการใช้นักเทียบท่า ให้ตั้งค่าตัวแปรสภาพแวดล้อม 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
เมื่อคุณไม่ได้ใช้ Docker สำหรับเดสก์ท็อปบน Mac ของคุณ (ดูด้านบน) คุณจะต้องเริ่มการทำงานของเครื่อง 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
เมื่อคุณไม่ได้ใช้ Docker for Desktop บน Windows ของคุณ (ดูด้านบน) คุณจะต้องเริ่มเครื่อง 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 กำหนดให้ติดตั้งไดเร็กทอรีโฮสต์ภายใน 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 คุณควรเมานต์ไดเร็กทอรีเหล่านั้นเพิ่มเติมจากค่าดีฟอลต์
เพิ่มทรัพยากร podman (ต้องใช้หน่วยความจำ 4G ขั้นต่ำ):
podman machine set < vm_name > --cpus 4 --memory 4096
เริ่มต้นเครื่อง:
podman machine init < vm_name >
กันทรามีคำสั่งย่อย 3 คำสั่ง:
analyse : คำสั่งย่อยนี้อนุญาตให้รันการวิเคราะห์ซอร์สโค้ดบนซอร์สโค้ดอินพุตหรือไบนารี
แปลง : คำสั่งย่อยนี้อนุญาตให้แปลงกฎ XML เป็น YAML หรือรันสูตร OpenRewrite บนซอร์สโค้ด
test : คำสั่งย่อยนี้อนุญาตให้ทดสอบกฎ YAML
คำสั่ง ย่อย analyse อนุญาตให้รันซอร์สโค้ดและการวิเคราะห์ไบนารีโดยใช้ 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 >
การแปลงมีคำสั่งย่อยสองคำสั่ง:
openrewrite : คำสั่งย่อยนี้อนุญาตให้รันสูตร OpenRewrite หนึ่งสูตรขึ้นไปบนซอร์สโค้ดอินพุต
กฎ : คำสั่งย่อยนี้อนุญาตให้แปลงกฎ Windup XML เป็นรูปแบบ analyser-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 XML เป็นกฎของ analyser-lsp YAML โดยใช้ windup-shim
หากต้องการแปลงกฎ Windup XML เป็นรูปแบบ analyser-lsp YAML ให้รัน:
kantra transform rules --input= < path/to/xmlrules > --output= < path/to/output/dir >
--input flag ควรชี้ไปที่ไฟล์หรือไดเร็กทอรีที่มีกฎ 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 อนุญาตให้รันการทดสอบกฎ YAML ที่เขียนขึ้นสำหรับ analyzer-lsp
อินพุตสำหรับนักวิ่งทดสอบจะเป็นไฟล์ทดสอบหนึ่งไฟล์ขึ้นไปและ/หรือไดเร็กทอรีที่มีการทดสอบที่เขียนด้วย YAML
kantra test /path/to/a/single/tests/file.test.yaml
ผลลัพธ์ของการทดสอบจะถูกพิมพ์บนคอนโซล
ดูวิธีต่างๆ ในการรันคำสั่ง test ในเอกสาร test runner
โปรดดูหลักจรรยาบรรณของ Konveyor ที่นี่