يوفر Slevomat Coding Standard لـ PHP_CodeSniffer معلومات تنقسم إلى ثلاث فئات:
= إصلاح الأخطاء تلقائيًا
= يمكن منع فحص الشم محليًا
الطريقة الموصى بها لتثبيت Slevomat Coding Standard هي من خلال Composer.
{
"require-dev" : {
"slevomat/coding-standard" : " ~8.0 "
}
}
يوصى أيضًا بتثبيت php-parallel-lint/php-parallel-lint الذي يتحقق من كود المصدر بحثًا عن أخطاء في بناء الجملة. تعتمد عمليات الشم على أن تكون التعليمات البرمجية التي تمت معالجتها صالحة من الناحية النحوية (بدون أخطاء تحليلية)، وإلا فإنها يمكن أن تتصرف بشكل غير متوقع. يُنصح بتشغيل PHP-Parallel-Lint
في أداة الإنشاء الخاصة بك قبل تشغيل PHP_CodeSniffer
والخروج من عملية الإنشاء مبكرًا في حالة فشل PHP-Parallel-Lint
.
يمكنك اختيار إحدى طريقتين لتشغيل عمليات الاستنشاق المحددة فقط من المعيار الموجود في قاعدة التعليمات البرمجية الخاصة بك:
الطريقة الموصى بها هي كتابة ملف Ruleset.xml الخاص بك عن طريق الرجوع إلى المقتطفات المحددة فقط. هذا نموذج لـ Ruleset.xml:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< config name = " installed_paths " value = " ../../slevomat/coding-standard " /> <!-- relative path from PHPCS source location -->
< rule ref = " SlevomatCodingStandard.Arrays.TrailingArrayComma " />
<!-- other sniffs to include -->
</ ruleset >
ثم قم بتشغيل ملف phpcs
القابل للتنفيذ بالطريقة المعتادة:
vendor/bin/phpcs --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
يمكنك أيضًا ذكر Slevomat Coding Standard في ruleset.xml
الخاص بمشروعك واستبعاد بعض المقتطفات فقط:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< rule ref = " vendor/slevomat/coding-standard/SlevomatCodingStandard/ruleset.xml " > <!-- relative path to your ruleset.xml -->
<!-- sniffs to exclude -->
</ rule >
</ ruleset >
ومع ذلك، فهي ليست طريقة موصى بها لاستخدام Slevomat Coding Standard، لأن الإصدار الخاص بك يمكن أن يتعطل عند التنقل بين الإصدارات الثانوية من المعيار (والذي يمكن أن يحدث إذا كنت تستخدم قيود الإصدار ^
أو ~
في composer.json
). نقوم بانتظام بإضافة عناصر جديدة حتى في الإصدارات الثانوية مما يعني أن الكود الخاص بك لن يتوافق على الأرجح مع الإصدارات الثانوية الجديدة من الحزمة.
تدعم عمليات الاستنشاق في هذا المعيار المميز بالرمز الإصلاح التلقائي لانتهاكات معايير الترميز. لإصلاح الكود تلقائيًا، قم بتشغيل phpcbf بدلاً من phpcs:
vendor/bin/phpcbf --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
تذكر دائمًا عمل نسخة احتياطية من التعليمات البرمجية الخاصة بك قبل إجراء الإصلاحات التلقائية والتحقق من النتائج بأم عينيك، حيث قد يؤدي الإصلاح التلقائي في بعض الأحيان إلى نتائج غير مرغوب فيها.
يمكن منع عمليات الاستنشاق المحددة في هذا المعيار والمميزة بالرمز لجزء معين من التعليمات البرمجية باستخدام تعليق توضيحي. خذ بعين الاعتبار المثال التالي:
/**
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
يمكن أن تحتوي المعلمة $max
على تلميح عددي int
أصلي. ولكن نظرًا لأن الطريقة الموجودة في الفئة الأصل لا تحتوي على هذا النوع من التلميح، فلا يمكن أن تحتوي عليه هذه الطريقة أيضًا. يظهر PHP_CodeSniffer الخطأ التالي:
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
67 | ERROR | [x] Method ErrorsConsoleStyle::createProgressBar()
| | does not have native type hint for its parameter $max
| | but it should be possible to add it based on @param
| | annotation "int".
| | (SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint)
إذا أردنا منع هذا الخطأ بدلاً من إصلاحه، فيمكننا أخذ رمز الخطأ ( SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
) واستخدامه مع تعليق توضيحي @phpcsSuppress
مثل هذا:
/**
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
لكي يعمل هذا المستودع على جهازك، قم باستنساخه وتشغيل هذين الأمرين في الدليل الجذر للمستودع:
composer install
bin/phing
بعد كتابة بعض التعليمات البرمجية وتحرير اختبارات الوحدة أو إضافتها، قم بتشغيل phing مرة أخرى للتأكد من أن كل شيء على ما يرام:
bin/phing
نحن نتطلع دائمًا إلى تقارير الأخطاء وطلبات الميزات وطلبات السحب. شكرًا لك.
يلتزم هذا المشروع بقواعد سلوك المساهمين. من خلال المشاركة في هذا المشروع ومجتمعه، يتوقع منك التمسك بهذا الرمز.