البرنامج المساعد ل php_codesniffer أداة التحليل الثابت التي تضيف تحليل الاستخدام المتغير مشكلة.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() دون تعريفها. (رمز الشم: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this ، self::$static_member ، static::$static_member يستخدم خارج نطاق الفصل. (رموز شم: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass أو VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) يتطلب التحليل المتغير PHP 5.4 أو أعلى و PHP CODESNIFFER الإصدار 3.5.6 أو أعلى.
هذه هي الأسهل طريقة.
أولاً ، قم بتثبيت phpcodesniffer-composer installer لمشروعك إذا لم تكن قد لم تكن بالفعل. سيؤدي هذا أيضًا إلى تثبيت PHPCs.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
ثم تثبيت هذه المعايير.
composer require --dev sirbrillig/phpcs-variable-analysis
يمكنك بعد ذلك تضمين الشم عن طريق إضافة سطر مثل ما يلي إلى ملف phpcs.xml الخاص بك.
<rule ref="VariableAnalysis"/>
يجب أن تعمل فقط بعد ذلك!
قم بتثبيت php_codesniffer (phpcs) باتباع تعليمات التثبيت الخاصة به (عبر الملحن أو ملف phar أو الكمثرى أو الخروج git).
تأكد من أن إصدار php_codesniffer يطابق متطلباتنا.
تثبيت variobleanalysis. قم بتنزيل ملف zip أو tar.gz من صفحة الإصدار الأخيرة. قم بتوسيع الملف وإعادة تسمية الدليل الناتج إلى phpcs-variable-analysis . انقل الدليل إلى مكان تريد الاحتفاظ بجميع معايير PHPCS الخاصة بك.
أضف مسارات المعايير المثبتة حديثًا إلى تكوين php_codesniffer installed_paths. يجب أن يقوم الأمر التالي بإلحاق المعايير الجديدة بمعاييرك الحالية (تأكد من توفير المسارات الفعلية للدلائل التي أنشأتها أعلاه).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
إذا لم يكن لديك أي معايير أخرى مثبتة ، فيمكنك القيام بذلك بسهولة أكبر (مرة أخرى ، تأكد من توفير المسارات الفعلية):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
هناك مجموعة متنوعة من الخيارات لتخصيص سلوك variableanalysis ، ألق نظرة على القواعد المضمنة.
الخيارات المتاحة هي كما يلي:
allowUnusedFunctionParameters (Bool ، false Default): إذا تم ضبطها على وسائط الوظيفية ، فلن يتم تمييزها أبدًا على أنها غير مستخدمة.allowUnusedCaughtExceptions (Bool ، true Default): إذا تم تعيينه على متغيرات الاستثناءات الحقيقية ، فلن يتم تمييزها على أنها غير مستخدمة.allowUnusedParametersBeforeUsed (Bool ، true Default): إذا تم تعيين وسيطات الوظائف الحقيقية وغير المستخدمة إذا تمت متابعتها بواسطة وسيطات الوظائف المستخدمة.allowUnusedVariablesBeforeRequire (Bool ، false Default): إذا تم تعيينه على True ، فلن يتم تمييز المتغيرات المحددة قبل require أو require_once أو include أو include_once على أنها غير مستخدمة. قد تكون مخصصة للملف المطلوب.allowUndefinedVariablesInFileScope (Bool ، false الافتراضي): إذا تم تعيينه على المتغيرات الحقيقية غير المحددة في نطاق الملف الأعلى للملف ، فلن يتم تمييزها على أنها غير محددة. يمكن أن يكون هذا مفيدًا لملفات القالب التي تستخدم العديد من المتغيرات العالمية المحددة في مكان آخر.allowUnusedVariablesInFileScope (Bool ، false Default): إذا تم تعيينه على المتغيرات الحقيقية غير المستخدمة في نطاق المستوى الأعلى للملف ، فلن يتم تمييزها على أنها غير مستخدمة. يمكن أن يكون هذا مفيدًا عند تحديد الكثير من المتغيرات العالمية لاستخدامها في مكان آخر.validUnusedVariableNames (السلسلة ، null الافتراضي): قائمة مفصولة بالفضاء من أسماء المتغيرات النائبة التي تريد تجاهلها من التحذيرات المتغيرة غير المستخدمة. على سبيل المثال ، لتجاهل المتغيرات $junk $unused ، يمكن تعيين ذلك على 'junk unused' .ignoreUnusedRegexp (سلسلة ، null افتراضية): سلسلة REGEXP PHP (لاحظ أن هذا يتطلب تحديدات صريحة) للمتغيرات التي تريد تجاهلها من تحذيرات متغيرة غير مستخدمة. على سبيل المثال ، لتجاهل المتغيرات $_junk و $_unused ، يمكن ضبط هذا على '/^_/' .validUndefinedVariableNames (سلسلة ، افتراضية null ): قائمة مفصولة بالفضاء لأسماء متغيرات العناصر النائمة التي تريد تجاهلها من التحذيرات المتغيرة غير المحددة. على سبيل المثال ، لتجاهل المتغيرات $post و $undefined ، يمكن تعيين ذلك على 'post undefined' . يمكن استخدام هذا مع validUndefinedVariableRegexp .validUndefinedVariableRegexp (سلسلة ، null افتراضية): سلسلة REGEXP PHP (لاحظ أن هذا يتطلب محددات صريحة) للمتغيرات التي تريد تجاهلها من تحذيرات متغيرة غير محددة. على سبيل المثال ، لتجاهل المتغيرات $post و $undefined ، يمكن ضبط ذلك على '/^(post|undefined)$/' . هذا يمكن استخدامه في تركيبة مع validUndefinedVariableNames .allowUnusedForeachVariables (Bool ، true Default): إذا تم ضبطه على قيم حقيقية وغير مستخدمة من بناء key => value لن يتم تمييز بناء جملة foreach على أنها غير مستخدمة.sitePassByRefFunctions (السلسلة ، null الافتراضي): قائمة بالوظائف المخصصة التي تمر في المتغيرات المراد تهيئتها بالرجوع (مثل preg_match() ) وبالتالي لا ينبغي أن تتطلب تحديد تلك المتغيرات في وقت مبكر. القائمة مفصولة المساحة وكل إدخال من functionName:1,2 . يأتي اسم الوظيفة أولاً يليه القولون وقائمة مفصولة بفواصل من أرقام الوسيطة (بدءًا من 1) والتي ينبغي اعتبارها تعريفات متغيرة. القيمة الخاصة ... في قائمة الوسائط ستتسبب في جميع الوسائط بعد أن تعتبر الرقم الأخير تعريفات متغيرة.allowWordPressPassByRefFunctions (Bool ، false الافتراضي): إذا تم ضبطها على TRUE ، فسيتم إضافة قائمة بوظائف WordPress الشائعة على أساس المرجع إلى قائمة تلك php بحيث يتم السماح بتمرير المتغيرات غير المحددة إلى هذه الوظائف (المراد تهيئتها بالرجوع).لتعيين هذه الخيارات ، يجب عليك استخدام XML في مجموعة القواعد الخاصة بك. للحصول على التفاصيل ، راجع صفحة خصائص شم PHPCS القابلة للتخصيص. فيما يلي مثال يتجاهل جميع المتغيرات التي تبدأ بأحرف سطحية:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >تم تشويه هذا من العمل الممتاز في https://github.com/illusori/php_codesniffer-variableanalysis
يرجى فتح القضايا أو PRS على هذا المستودع.
يجب أن تكون أي تغييرات مصحوبة باختبارات ويجب أن تمرر التحليل الثابت والتحليل الثابت. يرجى استخدام PHPDOC (بدلاً من الأنواع الفعلية) لإعلان الأنواع لأن هذا يجب أن يعمل في PHP 5.4.
لتشغيل الاختبارات ، تأكد من تثبيت الملحن ، ثم تشغيل:
composer install # you only need to do this once
composer test
لتشغيل linting ، استخدم:
composer lint
لتشغيل تحليل ثابت ، استخدم:
composer phpstan