PHPMD هو مشروع منفصل لـ PHP Depend ويهدف إلى أن يكون PHP مكافئًا لأداة Java المعروفة PMD. يمكن اعتبار PHPMD بمثابة تطبيق أمامي سهل الاستخدام لتدفق المقاييس الأولية التي يتم قياسها بواسطة PHP Depend.
https://phpmd.org
راجع https://phpmd.org/download/index.html
اكتب phpmd [filename|directory[,filename|directory[,...]]] [report format] [ruleset file]
، على سبيل المثال:
Mapi@arwen ~ $ phpmd php/PDepend/DbusUI/ xml Rulesets.xml
في حين أن ملف مجموعة القواعد rulesets.xml
يمكن أن يبدو كما يلي:
<? xml version = " 1.0 " ?>
< ruleset name = " My first PHPMD rule set "
xmlns = " https://phpmd.org/xml/ruleset/1.0.0 "
xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " https://phpmd.org/xml/ruleset/1.0.0
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd "
xsi : noNamespaceSchemaLocation = "
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd " >
< description >
My custom rule set that checks my code...
</ description >
< rule ref = " rulesets/codesize.xml " />
< rule ref = " rulesets/cleancode.xml " />
< rule ref = " rulesets/controversial.xml " />
< rule ref = " rulesets/design.xml " />
< rule ref = " rulesets/naming.xml " />
< rule ref = " rulesets/unusedcode.xml " />
</ ruleset >
تقرير XML سيكون مثل هذا:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< pmd version = " 0.0.1 " timestamp = " 2009-12-19T22:17:18+01:00 " >
< file name = " /projects/pdepend/PHP/Depend/DbusUI/ResultPrinter.php " >
< violation beginline = " 81 "
endline = " 81 "
rule = " UnusedFormalParameter "
ruleset = " Unused Code Rules "
externalInfoUrl = " https://phpmd.org/rules/unusedcode.html#unusedformalparameter "
priority = " 3 " >
Avoid unused parameters such as '$builder'.
</ violation >
</ file >
</ pmd >
يمكنك تمرير سلسلة مفصولة بفواصل مع قائمة أسماء الملفات أو أسماء الدليل، التي تحتوي على كود مصدر PHP إلى PHPMD.
يتضمن توزيع PHPMD Phar ملفات مجموعة القواعد داخل أرشيفه، حتى لو كانت المعلمة "rulesets/codesize.xml" أعلاه تبدو كمرجع لنظام الملفات.
لاحظ أن الإخراج الافتراضي موجود بتنسيق XML، لذا يمكنك إعادة توجيهه إلى ملف وXSLT أو أي شيء آخر
يمكنك أيضًا استخدام الأسماء المختصرة للإشارة إلى مجموعات القواعد المضمنة، مثل هذا:
phpmd PHP/Depend/DbusUI/ xml codesize
تقبل واجهة سطر الأوامر أيضًا الوسائط الاختيارية التالية:
--verbose, -v, -vv, -vvv
- مستوى الإسهاب الناتج. سيتم طباعة المزيد من المعلومات عما تتم معالجته أو تخزينه مؤقتًا. سيتم إرساله إلى STDERR
حتى لا يتداخل مع إخراج التقرير. سيكون لمخرجات text
أيضًا رابط أسفل كل خطأ يؤدي إلى توثيق القاعدة وتنسيق الموقع بطريقة تحولها معظم IDEs إلى رابط لفتح الملف في سطر الخطأ عند النقر عليه.--minimumpriority
- عتبة أولوية القاعدة؛ لن يتم استخدام القواعد ذات الأولوية الأقل منها.--reportfile
- يرسل مخرجات التقرير إلى الملف المحدد، بدلاً من هدف الإخراج الافتراضي STDOUT
.--suffixes
- سلسلة مفصولة بفواصل لامتدادات أسماء ملفات التعليمات البرمجية المصدر الصالحة، على سبيل المثال php وphtml.--exclude
- سلسلة من الأنماط مفصولة بفواصل تُستخدم لتجاهل الأدلة. استخدم العلامات النجمية للاستبعاد حسب النمط. على سبيل المثال *src/foo/*.php
أو *src/foo/*
--strict
- قم أيضًا بالإبلاغ عن تلك العقد باستخدام تعليق توضيحي @SuppressWarnings.--ignore-errors-on-exit
- سيتم الخروج برمز صفري، حتى في حالة وجود خطأ.--ignore-violations-on-exit
- سيتم الخروج برمز صفر، حتى لو تم العثور على أي انتهاكات.--cache
- سيتم تمكين ذاكرة التخزين المؤقت للنتيجة. سيتم تعيينه افتراضيًا على .phpmd.result-cache.php
في دليل العمل الحالي.--cache-file
- بالتعاون مع --cache
سوف يتجاوز مسار ملف ذاكرة التخزين المؤقت الافتراضي للنتيجة .phpmd.result-cache.php
إلى مسار الملف المحدد.--cache-strategy
- يضبط إستراتيجية التخزين المؤقت لتحديد ما إذا كان الملف لا يزال جديدًا. إما المحتوى لإسناده إلى محتويات الملف، أو الطابع الزمني لإسناده إلى الطابع الزمني للملف المعدل.--generate-baseline
- سيقوم بإنشاء phpmd.baseline.xml
للانتهاكات الموجودة بجوار ملف تعريف مجموعة القواعد. ستكون مسارات ملفات الانتهاكات مرتبطة بدليل العمل الحالي.--update-baseline
- سيزيل كافة الانتهاكات من ملف phpmd.baseline.xml
الموجود والذي لم يعد موجودًا. لن تتم إضافة مخالفات جديدة. سيكون مسار ملف الانتهاكات مرتبطًا بدليل العمل الحالي.--baseline-file
- مسار الملف إلى ملف xml أساسي مخصص. في حالة الغياب، سيتم تعيين الإعداد الافتراضي إلى phpmd.baseline.xml
--color
- تمكين اللون في الإخراج، على سبيل المثال، سيُظهر عارض النص اسم القاعدة باللون الأصفر ووصف الخطأ باللون الأحمر.--extra-line-in-excerpt
- حدد عدد الأسطر الإضافية التي تمت إضافتها إلى مقتطف التعليمات البرمجية بتنسيق htmlمثال لسطر الأوامر:
phpmd PHP/Depend/DbusUI xml codesize - ملف التقرير "phpmd.xml" - اللواحق "php,phtml"
يمكن أن تكون الخيارات قبل أو بعد الوسائط. ويمكن فصلها عن قيمتها إما بمسافة أو بعلامة يساوي ( =
). وبالتالي فإن بناء الجملة التالي يعادل الجملة السابقة:
phpmd --reportfile = "phpmd.xml" --suffixes = "php,phtml" PHP/Depend/DbusUI xml codesize
سيتم التعرف على السلاسل التي تبدأ بـ -
كأسماء خيارات. إذا كانت لديك وسائط تبدأ بـ -
، فاضبط الخيارات أولاً، ثم استخدم --
لتحديد البداية الصريحة أو قائمة الوسائط:
phpmd --reportfile "phpmd.xml" --اللاحقات "php,phtml" -- -foo/Folder xml codesize
يستخدم PHPMD ما يسمى بمجموعات القواعد التي تقوم بتكوين/تعريف مجموعة من القواعد التي سيتم تطبيقها على المصدر قيد الاختبار. لقد تم بالفعل شحن التوزيعة الافتراضية لـ PHPMD مع عدد قليل من المجموعات الافتراضية، والتي يمكن استخدامها خارج الصندوق. يمكنك استدعاء أداة cli الخاصة بـ PHPMD باسم مجموعة لتطبيق هذا التكوين:
~ $ phpmd /path/to/source text codesize
ولكن ماذا لو كنت ترغب في تطبيق أكثر من قاعدة واحدة على مصدرك؟ يمكنك أيضًا تمرير قائمة بأسماء مجموعات القواعد، مفصولة بفاصلة إلى أداة cli الخاصة بـ PHPMD:
~ $ phpmd /path/to/source text codesize,unusedcode,naming
يمكنك أيضًا مزج ملفات مجموعة القواعد المخصصة مع مجموعات القواعد المضمنة:
~ $ phpmd /path/to/source text codesize,/my/rules.xml
هذا كل شيء. باستخدام هذا السلوك، يمكنك تحديد المجموعة الخاصة بك من مجموعات القواعد التي ستتحقق من كود المصدر.
يتيح لك PHPMD أيضًا تحديد أدلة مصدر متعددة في حالة رغبتك في إنشاء مخرج واحد لأجزاء معينة من التعليمات البرمجية الخاصة بك
~ $ phpmd /path/to/code,index.php,/another/place/with/code text codesize
أو استخدم نمط الكرة الأرضية:
~ $ phpmd src/main/php/*/*/*{Renderer,Node}.php text my/rules.xml
يمكن لـ PHPMD أيضًا قراءة stdin القياسي للإدخال:
~ $ cat src/MyService.php | phpmd - أرسل رسالة نصية إلى my/rules.xml
لذلك قد يتم إنشاء كود PHP المراد فحصه بواسطة برنامج آخر وليس بالضرورة تخزينه في ملف.
تحدد أداة سطر أوامر PHPMD حاليًا أربعة رموز خروج مختلفة.
--ignore-violations-on-exit
، والتي ستؤدي إلى القيمة 0 حتى لو تم العثور على أي انتهاكات.في الوقت الحالي، يأتي PHPMD مع العارضين التاليين:
بالنسبة للمشاريع القائمة، يمكن إنشاء خط أساس للانتهاك. سيتم تجاهل جميع الانتهاكات في خط الأساس هذا في عمليات التفتيش الإضافية.
سيكون النهج الموصى به هو phpmd.xml
في جذر المشروع. لإنشاء phpmd.baseline.xml
بجانبه:
~ $ phpmd /path/to/source text phpmd.xml --generate-baseline
لتحديد مسار ملف أساسي مخصص للتصدير:
~ $ phpmd /path/to/source text phpmd.xml --generate-baseline --baseline-file /path/to/source/phpmd.baseline.xml
افتراضيًا، سيبحث PHPMD بجوار phpmd.xml
عن phpmd.baseline.xml
. لاستبدال هذا السلوك:
~ $ phpmd /path/to/source text phpmd.xml --baseline-file /path/to/source/phpmd.baseline.xml
لتنظيف ملف أساسي موجود وإزالة الانتهاكات التي لم تعد موجودة إلا :
~ $ phpmd /path/to/source text phpmd.xml --update-baseline
متاح كجزء من اشتراك Tidelift.
يعمل مشرفو PHPMD
وآلاف الحزم الأخرى مع Tidelift لتقديم الدعم التجاري والصيانة للتبعيات مفتوحة المصدر التي تستخدمها لبناء تطبيقاتك. يمكنك توفير الوقت وتقليل المخاطر وتحسين سلامة التعليمات البرمجية، مع الدفع لمشرفي التبعيات الدقيقة التي تستخدمها. يتعلم أكثر.
إذا كنت ترغب في المساهمة في PHPMD، يرجى الرجوع إلى دليل المساهمة.