หลังจากหกปีของการพัฒนา PHPStan 1.0 ตัววิเคราะห์คงที่รุ่นแรกที่เสถียรเกิดขึ้นซึ่งช่วยให้คุณสามารถค้นหาข้อผิดพลาดในโค้ด PHP โดยไม่ต้องดำเนินการและใช้การทดสอบหน่วย รหัสโครงการเขียนด้วย PHP และเผยแพร่ภายใต้ใบอนุญาต MIT
เครื่องวิเคราะห์มีการตรวจสอบ 10 ระดับ ซึ่งแต่ละระดับต่อมาจะขยายขีดความสามารถของระดับก่อนหน้าและให้การตรวจสอบที่เข้มงวดมากขึ้น:
ตัวอย่างของปัญหาพื้นฐานที่ระบุ:
- การมีอยู่ของคลาสที่ใช้ในอินสแตนซ์ catch คำใบ้และโครงสร้างภาษาอื่นๆ
- การมีอยู่และความพร้อมใช้งานของวิธีการและฟังก์ชันที่ถูกเรียก รวมถึงจำนวนอาร์กิวเมนต์ที่ส่งผ่าน
- ตรวจสอบว่าวิธีการส่งคืนข้อมูลที่มีประเภทเดียวกันกับที่กำหนดไว้ในนิพจน์การส่งคืน
- การมีอยู่และการมองเห็นของคุณสมบัติที่กำลังเข้าถึง และตรวจสอบประเภทข้อมูลที่ประกาศและจริงที่ใช้ในคุณสมบัติ
- จำนวนพารามิเตอร์ที่ส่งผ่านไปยังการเรียก sprintf/printf ในบล็อกการจัดรูปแบบสตริงนั้นถูกต้อง
- การมีอยู่ของตัวแปรโดยคำนึงถึงบล็อกบัญชีที่เกิดจากตัวดำเนินการแยกสาขาและลูป
- การแคสต์ประเภทที่ไม่มีประโยชน์ (เช่น "(string) 'foo'") และการทดสอบที่เข้มงวด ("===" และ "!==") กับข้อมูลที่มีประเภทและตัวถูกดำเนินการต่างกันซึ่งจะส่งกลับค่าเท็จเสมอ
นวัตกรรมที่สำคัญใน PHPStan 1.0:
- มีการใช้ระดับการตรวจสอบ "9" ซึ่งจะตรวจสอบการใช้ประเภท "ผสม" ซึ่งมีจุดประสงค์เพื่อจัดระเบียบการรับพารามิเตอร์ของฟังก์ชันด้วยประเภทต่างๆ ระดับ XNUMX ระบุการใช้ "mixed" ที่ไม่ปลอดภัย เช่น การส่งค่าประเภท "mixed" ไปยังประเภทอื่น การเรียกวิธีการประเภท "mixed" และการเข้าถึงคุณสมบัติเนื่องจากอาจไม่มีอยู่จริง
- ควบคุมว่าค่าที่ส่งคืนจะเหมือนกันสำหรับการเรียกใช้ฟังก์ชันที่เหมือนกันหรือไม่โดยใช้คำอธิบายประกอบ @phpstan-pure และ @phpstan-impure
- พิมพ์การวิเคราะห์ในโครงสร้าง try-catch-finally โดยใช้คำอธิบายประกอบ @throws
- การระบุคุณสมบัติ วิธีการ และค่าคงที่ภายใน (ส่วนตัว) ที่กำหนดไว้แต่ไม่ได้ใช้
- การส่งผ่านการโทรกลับที่เข้ากันไม่ได้ไปยังฟังก์ชันอาร์เรย์ เช่น array_map และ usort
- การตรวจสอบประเภทสำหรับคำอธิบายประกอบที่ขาดหายไป
- สร้างการประกาศประเภทที่เข้ากันได้กับ PHPDocs ทำให้สามารถใช้ประเภทจากข้อความแสดงข้อผิดพลาดใน PHPDocs
ที่มา: opennet.ru