กฎ PHPSTAN เพื่อตรวจจับการโทรที่ไม่อนุญาตและอื่น ๆ โดยไม่ต้องเรียกใช้รหัส
มีฟังก์ชั่นวิธีการและค่าคงที่บางอย่างที่ไม่ควรใช้ในรหัสการผลิต ตัวอย่างหนึ่งที่ดีคือ var_dump() มักจะใช้ในการแก้ไขปัญหาการดีบักอย่างรวดเร็ว แต่ควรลบออกก่อนที่จะใช้รหัส และบางครั้งก็ไม่ใช่
อีกตัวอย่างหนึ่งจะเป็นเครื่องบันทึกทั่วไป สมมติว่าคุณใช้หนึ่งในไลบรารีการบันทึกทั่วไป แต่คุณมีเครื่องบันทึกของคุณเองที่จะเพิ่มข้อมูลเพิ่มเติมหรือฆ่าเชื้อข้อมูลก่อนที่จะเรียกตัวบันทึกทั่วไป รหัสของคุณไม่ควรเรียกตัวบันทึกทั่วไปโดยตรง แต่ควรใช้ตัวบันทึกที่กำหนดเองแทนแทน
ส่วนขยาย phpstan นี้จะตรวจจับการใช้งานดังกล่าวหากกำหนดค่า ควรสังเกตว่าส่วนขยายนี้ไม่ใช่วิธีการป้องกันหรือตรวจจับหรือตรวจจับนักพัฒนาที่ไม่เป็นมิตรเนื่องจากพวกเขาสามารถทำให้งงงวยการโทรเช่น ส่วนขยายนี้หมายถึงการเป็นอีกคู่ของดวงตาตรวจจับความผิดพลาดของคุณเองมันไม่ได้มีจุดมุ่งหมายที่จะตรวจจับสิ่งต่าง ๆ ทั้งหมด
การทดสอบจะให้ตัวอย่างสิ่งที่ตรวจพบ ในปัจจุบัน หากไม่ได้รับการทดสอบจากการทดสอบอาจเป็นได้ แต่ส่วนใหญ่อาจไม่ได้รับการตรวจพบ *Test.php คือการทดสอบเริ่มต้นด้วยรหัสทดสอบที่วิเคราะห์อยู่ใน SRC, คลาสทดสอบที่จำเป็นใน LIBS
อย่าลังเลที่จะยื่นปัญหาหรือสร้างคำขอดึงหากคุณต้องการตรวจจับการโทรเพิ่มเติม
ติดตั้งส่วนขยายโดยใช้นักแต่งเพลง:
composer require --dev spaze/phpstan-disallowed-calls
PHPSTAN เครื่องมือการวิเคราะห์แบบคงที่ PHP เป็นข้อกำหนด
หากคุณใช้ PHPSTAN/EXTENSION-Installer คุณพร้อมแล้วและสามารถข้ามไปยังการกำหนดค่าได้
สำหรับการติดตั้งด้วยตนเองเพิ่มสิ่งนี้ลงใน phpstan.neon ของคุณ:
includes :
- vendor/spaze/phpstan-disallowed-calls/extension.neon คุณสามารถเริ่มต้นด้วยไฟล์การกำหนดค่าแบบรวม
ส่วนขยายรองรับกฎที่กำหนดเองอเนกประสงค์ด้วย
สมมติว่าคุณไม่อนุญาตให้ foo() ด้วยกฎที่กำหนดเอง แต่คุณต้องการอนุญาตอีกครั้งเมื่อใช้ใน wrapper ที่กำหนดเองของคุณหรือเมื่อพารามิเตอร์แรกเท่ากับหรือไม่ค่าที่ระบุ ส่วนขยายมีหลายวิธีในการทำเช่นนั้น:
แอตทริบิวต์การซื้อใหม่ใช้การกำหนดค่าที่คล้ายกัน
ใช้เครื่องกำเนิดไฟฟ้าที่ให้ไว้เพื่อสร้างตัวอย่างการกำหนดค่าจาก disable_functions ของ PHP & disable_classes คำสั่งการกำหนดค่า
------ --------------------------------------------------------
Line libraries/Report/Processor/CertificateTransparency.php
------ --------------------------------------------------------
116 Calling var_dump() is forbidden, use logger instead
------ --------------------------------------------------------
ชื่อฟังก์ชั่นชื่อเมธอดชื่อคลาสเนมสเปซจะถูกจับคู่โดยไม่คำนึงถึงกรณีของพวกเขา (ไม่อนุญาตให้ print_r จะพบการโทร print_R ) ในขณะที่สิ่งอื่น ๆ เช่นค่าคงที่ชื่อไฟล์เส้นทางจะไม่
นอกจากนี้คุณยังสามารถใช้ส่วนขยายนี้โดยไม่มีกฎ phpstan อื่น ๆ สิ่งนี้อาจมีประโยชน์หากคุณต้องการตรวจสอบรหัสบุคคลที่สามสำหรับการโทรหรือการใช้งานบางอย่าง
หากคุณต้องการมีส่วนร่วม (ยอดเยี่ยมขอบคุณ!) คุณควรเพิ่ม/เรียกใช้การทดสอบสำหรับการมีส่วนร่วมของคุณ การติดตั้งการพึ่งพา dev ครั้งแรกโดยใช้ composer install จากนั้นเรียกใช้การทดสอบ phpunit ด้วย composer test ดู scripts ใน composer.json การทดสอบยังทำงานบน GitHub ด้วยการกระทำในการกดแต่ละครั้ง
คุณสามารถแก้ไขปัญหาสไตล์การเข้ารหัสโดยอัตโนมัติโดยเรียกใช้ composer cs-fix
มีโครงการที่คล้ายกันที่มีการกำหนดค่าที่แตกต่างกันเล็กน้อยสร้างขึ้นในเวลาเดียวกัน (เพียงไม่กี่วันที่แตกต่าง): PHPStan ถูกแบน