การเปิดตัว PHPStan 1.0 ซึ่งเป็นตัววิเคราะห์แบบคงที่สำหรับโค้ด PHP

หลังจากหกปีของการพัฒนา PHPStan 1.0 ตัววิเคราะห์คงที่รุ่นแรกที่เสถียรเกิดขึ้นซึ่งช่วยให้คุณสามารถค้นหาข้อผิดพลาดในโค้ด PHP โดยไม่ต้องดำเนินการและใช้การทดสอบหน่วย รหัสโครงการเขียนด้วย PHP และเผยแพร่ภายใต้ใบอนุญาต MIT

เครื่องวิเคราะห์มีการตรวจสอบ 10 ระดับ ซึ่งแต่ละระดับต่อมาจะขยายขีดความสามารถของระดับก่อนหน้าและให้การตรวจสอบที่เข้มงวดมากขึ้น:

  • การตรวจสอบพื้นฐาน การกำหนดคลาสที่ไม่รู้จัก ฟังก์ชันและเมธอด ($นี้) ตัวแปรที่ไม่ได้กำหนด และส่งผ่านจำนวนอาร์กิวเมนต์ที่ไม่ถูกต้อง
  • การระบุตัวแปรที่อาจไม่ได้กำหนด วิธีการเวทย์มนตร์ที่ไม่รู้จัก และคุณสมบัติของคลาสด้วย __call และ __get
  • การตรวจหาวิธีการที่ไม่รู้จักในทุกนิพจน์ ไม่จำกัดเฉพาะการโทรผ่าน $this กำลังตรวจสอบ PHPDocs
  • การตรวจสอบประเภทการคืนสินค้าและการกำหนดประเภทให้กับคุณสมบัติ
  • การระบุพื้นฐานของรหัส "ตาย" (ไม่เคยถูกเรียก) ระบุอินสแตนซ์ของการเรียกที่ส่งคืนเท็จเสมอ บล็อก "อื่น" ที่ไม่เคยเริ่มทำงาน และโค้ดหลังจากส่งคืน
  • การตรวจสอบประเภทของอาร์กิวเมนต์ที่ส่งผ่านไปยังเมธอดและฟังก์ชัน
  • คำเตือนเกี่ยวกับคำอธิบายประกอบข้อมูลประเภทที่หายไป
  • คำเตือนเกี่ยวกับประเภทสหภาพที่ไม่ถูกต้องซึ่งกำหนดคอลเลกชันตั้งแต่สองประเภทขึ้นไป
  • คำเตือนเกี่ยวกับวิธีการเรียกและการเข้าถึงคุณสมบัติประเภท "nullable"
  • การตรวจสอบการใช้งานแบบ "ผสม"

    ตัวอย่างของปัญหาพื้นฐานที่ระบุ:

    • การมีอยู่ของคลาสที่ใช้ในอินสแตนซ์ 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

  • เพิ่มความคิดเห็น