
pylyzer เป็นเซิร์ฟเวอร์วิเคราะห์รหัสแบบคงที่ / ภาษาสำหรับ Python เขียนด้วย Rust
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked ตรวจสอบให้แน่ใจว่า cargo / rustc นั้นทันสมัยเนื่องจาก Pylyzer อาจเขียนด้วยคุณสมบัติภาษา (เสถียร) ล่าสุด
pylyzer file.pyหากคุณไม่ได้ระบุพา ธ ไฟล์ Pylyzer จะค้นหาจุดเริ่มต้นโดยอัตโนมัติ
pylyzerตัวเลือกนี้ใช้เมื่อตัวแก้ไขที่รับรู้ LSP ต้องการอาร์กิวเมนต์เพื่อเริ่มต้น Pylyzer
pylyzer --serverสำหรับตัวเลือกอื่น ๆ ให้ตรวจสอบคู่มือ
โดยเฉลี่ยแล้ว Pylyzer สามารถตรวจสอบสคริปต์ Python ได้เร็วกว่า Pytype และ Pyright 1 มากกว่า 100 เท่า นี่เป็นส่วนใหญ่เนื่องจากความจริงที่ว่า Pylyzer ถูกนำไปใช้ใน Rust
ในขณะที่รายงานข้อผิดพลาดของ Pytype/Pyright นั้นอ่านไม่ออก แต่ Pylyzer จะแสดงว่าเกิดข้อผิดพลาดที่เกิดขึ้นและมีข้อความแสดงข้อผิดพลาดที่ชัดเจน
Pylyzer ในฐานะเซิร์ฟเวอร์ภาษารองรับคุณสมบัติต่าง ๆ เช่นเสร็จสิ้นและเปลี่ยนชื่อ (เซิร์ฟเวอร์ภาษาเป็นการปรับตัวของ ERG Language Server (ELS) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติที่นำไปใช้โปรดดูที่นี่)
คุณสามารถติดตั้งส่วนขยาย VSCODE จากตลาดหรือจากบรรทัดคำสั่ง:
code --install-extension pylyzer.pylyzerRuff เช่น Pylyzer เป็นเครื่องมือวิเคราะห์รหัสแบบคงที่สำหรับ Python ที่เขียนด้วย Rust แต่ Ruff เป็น Linter และ Pylyzer เป็นเซิร์ฟเวอร์ Checker และภาษา Pylyzer ไม่ได้ดำเนินการผ้าสำลีและการจัดรูปแบบและ Ruff ไม่ได้ทำการตรวจสอบประเภท
Pylyzer ใช้ตัวตรวจสอบประเภทของภาษาการเขียนโปรแกรม ERG ภายใน ภาษานี้เป็นภาษา transpiled ที่กำหนดเป้าหมาย Python และมีระบบประเภทคงที่
Pylyzer แปลง Python asts เป็น erg asts และส่งผ่านไปยังตัวตรวจสอบประเภทของ ERG จากนั้นจะแสดงผลลัพธ์ด้วยการดัดแปลงที่เหมาะสม
ผู้ตรวจสอบประเภทของ Pylyzer จะถือว่ารหัสพิมพ์แบบคงที่เท่านั้นดังนั้นคุณจึงไม่สามารถตรวจสอบรหัสใด ๆ ที่ใช้การสะท้อนกลับเช่น exec , setattr ฯลฯ
Pylyzer (= ระบบประเภทของ ERG) มีการประกาศประเภทของตัวเองสำหรับ APIs มาตรฐาน Python การพิมพ์ API ทั้งหมดไม่สมบูรณ์และอาจส่งผลให้เกิดข้อผิดพลาดว่า API ดังกล่าวไม่มีอยู่จริง
เนื่องจากการตรวจสอบประเภทของ Pylyzer เป็นแบบอนุรักษ์นิยมคุณอาจพบข้อผิดพลาดจำนวนมาก เรากำลังดำเนินการแก้ไขปัญหานี้ แต่หากคุณกังวลเกี่ยวกับข้อผิดพลาดของบรรณาธิการโปรดปิดคุณลักษณะการวินิจฉัย
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is isinstance ) pyi (Stub) # type: ... ) pippoetryuvเรากำลังมองหาผู้มีส่วนร่วมเพื่อช่วยเราปรับปรุง Pylyzer หากคุณสนใจที่จะมีส่วนร่วมและมีคำถามใด ๆ โปรดติดต่อเรา
1 การทดสอบประสิทธิภาพได้ดำเนินการใน MacBook (ต้นปี 2559) ด้วยโปรเซสเซอร์ Intel Core M3 1.1 GHz และหน่วยความจำ LPDDR3 8 GB 1867 MHz LPDDR3 ↩