
phpmnd هي أداة تهدف إلى مساعدتك في اكتشاف الأرقام السحرية في رمز PHP الخاص بك. بشكل افتراضي 0 و 1 لا يعتبران أرقام سحرية.
الرقم السحري هو حرفي رقمي لا يتم تعريفه على أنه ثابت ، ولكنه قد يتغير في مرحلة لاحقة ، وبالتالي قد يكون من الصعب تحديثه. تعتبر ممارسة برمجة سيئة لاستخدام الأرقام مباشرة في أي رمز مصدر دون تفسير. في معظم الحالات ، يجعل هذا البرامج أكثر صعوبة في القراءة وفهمها وصيانتها.
النظر في الكود الافتراضي التالي:
class Foo
{
public function setPassword ( $ password )
{
// don't do this
if ( mb_strlen ( $ password ) > 7 ) {
throw new InvalidArgumentException ( " password " );
}
}
}التي ينبغي إعادة تمهيدها ل:
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 = أمثلة).
يتيح لك خيار --extensions تمديد تحليل الكود. يجب فصل الامتدادات المقدمة.
سيقترح خيار --hint بدائل للأرقام السحرية استنادًا إلى ثوابت قاعدة الكود الخاصة بك.
سيستبعد خيار- --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 كما ليس السحر.
يرجى الاطلاع على المساهمة. md لمزيد من المعلومات.
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على الترخيص لمزيد من المعلومات.