
phpmnd เป็นเครื่องมือที่มีจุดมุ่งหมายเพื่อ ช่วยให้ คุณตรวจจับหมายเลขเวทย์มนตร์ในรหัส PHP ของคุณ โดยค่าเริ่มต้น 0 และ 1 จะไม่ถือว่าเป็นตัวเลขวิเศษ
หมายเลขเวทย์มนตร์เป็นตัวอักษรตัวเลขที่ไม่ได้กำหนดเป็นค่าคงที่ แต่อาจเปลี่ยนแปลงได้ในระยะต่อมาและดังนั้นจึงยากที่จะอัปเดต ถือว่าเป็นวิธีการเขียนโปรแกรมที่ไม่ดีเพื่อใช้ตัวเลขโดยตรงในซอร์สโค้ดใด ๆ โดยไม่มีคำอธิบาย ในกรณีส่วนใหญ่สิ่งนี้ทำให้โปรแกรมอ่านเข้าใจและบำรุงรักษาได้ยากขึ้น
พิจารณารหัสสมมุติฐานต่อไปนี้:
class Foo
{
public function setPassword ( $ password )
{
// don't do this
if ( mb_strlen ( $ password ) > 7 ) {
throw new InvalidArgumentException ( " password " );
}
}
}ซึ่งควร refactored เป็น:
class Foo
{
const MAX_PASSWORD_LENGTH = 7 ; // not const SEVEN = 7 :)
public function setPassword ( $ password )
{
if ( mb_strlen ( $ password ) > self :: MAX_PASSWORD_LENGTH ) {
throw new InvalidArgumentException ( " password " );
}
}
}สิ่งนี้จะช่วยปรับปรุงความสามารถในการอ่านรหัสอย่างชัดเจนและลดค่าใช้จ่ายในการบำรุงรักษา
แน่นอนว่าไม่ใช่ทุกหมายเลขที่แท้จริงคือหมายเลขเวทย์มนตร์
$ is_even = $ number % 2 === 0แน่นอนในกรณีนี้หมายเลข 2 ไม่ใช่หมายเลขวิเศษ
กฎง่ายๆของฉัน:
If the number came from business specs and is used directly - it's a magic number.
คุณสามารถเพิ่มเครื่องมือนี้เป็นท้องถิ่นต่อโครงการการพัฒนาการพัฒนาโครงการของคุณโดยใช้นักแต่งเพลง:
$ composer require --dev povils/phpmnd หลังจากนั้นคุณสามารถเรียกใช้งานได้โดยใช้การดำเนินการของ vendor/bin/phpmnd
เพื่อติดตั้งทั่วโลกเพียงแค่เรียกใช้:
$ composer global require povils/phpmnd หลังจากนั้นตรวจสอบให้แน่ใจว่าคุณมีไดเรกทอรีไบนารีนักแต่งเพลงทั่วโลกใน PATH ของคุณ ตัวอย่างสำหรับระบบ UNIX บางระบบ:
$ export PATH= " $PATH : $HOME /.composer/vendor/bin " 
$ phpmnd wordpress --ignore-numbers=2,-1 --ignore-funcs=round,sleep --exclude=tests --progress
--extensions=default_parameter,-return,argument ตัวเลือก --allow-array-mapping อนุญาตให้ปุ่มเป็นสายเมื่อใช้ส่วนขยาย "อาร์เรย์"
ตัวเลือก --exclude-file จะไม่รวมไฟล์จากการวิเคราะห์รหัส อนุญาตให้มีค่าหลายค่า
ตัวเลือก --exclude-path จะไม่รวมเส้นทางซึ่งจะต้องสัมพันธ์กับแหล่งที่มาจากการวิเคราะห์รหัส อนุญาตให้มีค่าหลายค่า
--exclude ตัวเลือก exclude จะไม่รวมไดเรกทอรีซึ่งจะต้องสัมพันธ์กับแหล่งที่มาจากการวิเคราะห์รหัส อนุญาตให้มีค่าหลายค่า (เช่น -exclude = การทดสอบ -exclude = ตัวอย่าง)
ตัวเลือก --extensions ให้คุณขยายการวิเคราะห์รหัส ส่วนขยายที่ให้มาจะต้องแยกเครื่องหมายจุลภาค
ตัวเลือก --hint จะแนะนำการเปลี่ยนหมายเลขเวทย์มนตร์ตามค่าคงที่ codebase ของคุณ
ตัวเลือก --ignore-funcs จะไม่รวมรายการฟังก์ชั่นที่คั่นด้วยเครื่องหมายจุลภาคออกจากการวิเคราะห์รหัสเมื่อใช้ส่วนขยาย "อาร์กิวเมนต์" ค่าเริ่มต้นเป็น intval , floatval , strval
ตัวเลือก --ignore-numbers จะไม่รวมรายการของเครื่องหมายจุลภาคที่คั่นด้วยการวิเคราะห์รหัส
ตัวเลือก --ignore-strings จะไม่รวมสตริงจากการวิเคราะห์รหัสเมื่อใช้ตัวเลือก "สตริง"
ตัวเลือก --include-numeric-string บังคับให้สตริงตัวเลขเช่น "1234" เพื่อรับการปฏิบัติเป็นตัวเลข
ตัวเลือก --progress จะแสดงแถบความคืบหน้า
ตัวเลือก --strings จะรวมการค้นหาตามตัวอักษรในการวิเคราะห์รหัส
ตัวเลือก --suffixes จะกำหนดค่ารายการคั่นด้วยเครื่องหมายจุลภาคของส่วนขยายชื่อไฟล์ซอร์สโค้ดที่ถูกต้อง
ตัวเลือก --whitelist จะประมวลผลไฟล์ที่แสดงในไฟล์ที่ระบุเท่านั้น สิ่งนี้มีประโยชน์สำหรับการวิเคราะห์ที่เพิ่มขึ้น
ตัวเลือก --xml-output จะสร้างรายงานในรูปแบบ XML ไปยังเส้นทางที่ระบุโดยตัวเลือก โดยค่าเริ่มต้นมันจะวิเคราะห์เงื่อนไขส่งคืนคำสั่งและสวิตช์กรณี
round ( $ number , 4 ); $ array = [ 200 , 201 ]; $ var = 10 ; function foo( $ default = 3 ); $ bar = $ foo * 20 ; private $ bar = 10 ; return 5 ; $ var < 7 ;case 3 ;หากส่วนขยายเริ่มต้นด้วยการลบหมายความว่าสิ่งเหล่านี้จะถูกลบออกจากการวิเคราะห์รหัส ฉันขอแนะนำให้ทำความสะอาดรหัสของคุณโดยใช้ส่วนขยายเริ่มต้นก่อนที่จะใช้ส่วนขยายเหล่านี้
บางครั้งจำเป็นต้องมีตัวเลขเวทย์มนตร์ ตัวอย่างเช่นการใช้สูตรทางคณิตศาสตร์ที่รู้จักโดยค่าเริ่มต้น intval , floatval และ strval ทำเครื่องหมายตัวเลขไม่ใช่เวทมนตร์
เช่น
$percent = $number / 100;
จะแสดง 100 เป็นหมายเลขเวทย์มนตร์
$percent = $number / intval(100);
จะทำเครื่องหมาย 100 ว่าไม่ใช่เวทมนตร์
โปรดดูข้อมูลเพิ่มเติมสำหรับข้อมูลเพิ่มเติม
ใบอนุญาต MIT (MIT) โปรดดูใบอนุญาตสำหรับข้อมูลเพิ่มเติม