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 กฎชุด.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
อินเทอร์เฟซบรรทัดคำสั่งยังยอมรับอาร์กิวเมนต์ทางเลือกต่อไปนี้:
--verbose, -v, -vv, -vvv
- ระดับความละเอียดของเอาต์พุต จะพิมพ์ข้อมูลเพิ่มเติมว่ากำลังประมวลผลหรือแคชอะไรอยู่ จะถูกส่งไปที่ STDERR
เพื่อไม่ให้รบกวนเอาต์พุตรายงาน เอาต์พุต text
จะมีลิงก์ไปยังเอกสารประกอบของกฎภายใต้แต่ละข้อผิดพลาดและจัดรูปแบบตำแหน่งในลักษณะที่ IDE ส่วนใหญ่จะแปลงเป็นลิงก์เพื่อเปิดไฟล์ที่บรรทัดข้อผิดพลาดเมื่อคลิก--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
ที่มีอยู่ซึ่งไม่มีอีกต่อไป การละเมิดใหม่จะถูกเพิ่ม _not_ เส้นทางไฟล์ของการละเมิดจะสัมพันธ์กับไดเร็กทอรีการทำงานปัจจุบัน--baseline-file
- พาธของไฟล์ไปยังไฟล์ xml พื้นฐานที่กำหนดเอง หากไม่มี จะมีค่าเริ่มต้นเป็น phpmd.baseline.xml
--color
- เปิดใช้งานสีในเอาต์พุต เช่น ตัวแสดงข้อความจะแสดงชื่อกฎเป็นสีเหลือง และคำอธิบายข้อผิดพลาดเป็นสีแดง--extra-line-in-excerpt
- ระบุจำนวนบรรทัดพิเศษที่จะเพิ่มลงในข้อมูลโค้ดในรูปแบบ htmlบรรทัดคำสั่งตัวอย่าง:
ขนาดโค้ด phpmd PHP/Depend/DbusUI xml --reportfile "phpmd.xml" --suffixes "php,phtml"
ตัวเลือกสามารถอยู่ก่อนหรือหลังอาร์กิวเมนต์ได้ สามารถแยกออกจากค่าได้ด้วยการเว้นวรรคหรือเครื่องหมายเท่ากับ ( =
) ดังนั้นไวยากรณ์ต่อไปนี้จึงเทียบเท่ากับไวยากรณ์ก่อนหน้า:
phpmd --reportfile="phpmd.xml" --suffixes="php,phtml" PHP/Depend/DbusUI ขนาดโค้ด xml
สตริงที่ขึ้นต้นด้วย -
จะถือเป็นชื่อตัวเลือก หากคุณมีข้อโต้แย้งที่ขึ้นต้นด้วย -
ให้ตั้งค่าตัวเลือกก่อน จากนั้นใช้ --
เพื่อทำเครื่องหมายจุดเริ่มต้นที่ชัดเจนหรือรายการข้อโต้แย้ง:
phpmd --reportfile "phpmd.xml" --suffixes "php,phtml" -- -foo/Folder ขนาดโค้ด xml
PHPMD ใช้สิ่งที่เรียกว่าชุดกฎที่กำหนดค่า/กำหนดชุดกฎที่จะนำไปใช้กับแหล่งที่มาภายใต้การทดสอบ การแจกจ่าย PHPMD เริ่มต้นนั้นมาพร้อมกับชุดเริ่มต้นบางชุดที่สามารถใช้งานได้ทันที คุณสามารถเรียกใช้เครื่องมือ cli ของ PHPMD ด้วยชื่อชุดเพื่อใช้การกำหนดค่านี้:
~ $ phpmd /path/to/source รหัสขนาดข้อความ
แต่ถ้าคุณต้องการใช้กฎมากกว่าหนึ่งชุดกับแหล่งที่มาของคุณล่ะ คุณยังสามารถส่งรายการชื่อชุดกฎโดยคั่นด้วยเครื่องหมายจุลภาคไปยังเครื่องมือ cli ของ PHPMD ได้:
~ $ phpmd /path/to/source ขนาดรหัสข้อความ, รหัสที่ไม่ได้ใช้, การตั้งชื่อ
คุณยังสามารถผสมไฟล์ชุดกฎแบบกำหนดเองกับชุดกฎบิวด์อินได้:
~ $ phpmd /path/to/source ขนาดโค้ดข้อความ,/my/rules.xml
แค่นั้นแหละ. ด้วยลักษณะการทำงานนี้ คุณสามารถระบุชุดกฎที่จะตรวจสอบซอร์สโค้ดของคุณเองได้
PHPMD ยังอนุญาตให้คุณระบุไดเรกทอรีต้นทางหลายรายการได้ ในกรณีที่คุณต้องการสร้างเอาต์พุตเดียวสำหรับบางส่วนของโค้ดของคุณ
~ $ phpmd /path/to/code,index.php,/another/place/with/code ขนาดโค้ดข้อความ
หรือใช้รูปแบบ glob:
~ $ phpmd src/main/php/*/*/*{Renderer, Node}.php ส่งข้อความของฉัน/rules.xml
PHPMD ยังสามารถอ่าน stdin อินพุตมาตรฐานได้:
~ $ cat src/MyService.php | phpmd - ส่งข้อความถึงฉัน/rules.xml
ดังนั้นโค้ด PHP ที่จะสแกนอาจถูกสร้างขึ้นโดยโปรแกรมอื่นที่ไม่จำเป็นต้องจัดเก็บไว้ในไฟล์
เครื่องมือบรรทัดคำสั่งของ PHPMD ปัจจุบันกำหนดรหัสทางออกที่แตกต่างกันสี่รหัส
--ignore-violations-on-exit
ซึ่งจะส่งผลให้เป็น 0 แม้ว่าจะพบการละเมิดก็ตามในขณะนี้ PHPMD มาพร้อมกับตัวเรนเดอร์ดังต่อไปนี้:
สำหรับโครงการที่มีอยู่ สามารถสร้างพื้นฐานการละเมิดได้ การละเมิดทั้งหมดในบรรทัดฐานนี้จะถูกละเว้นในการตรวจสอบเพิ่มเติม
แนวทางที่แนะนำคือ phpmd.xml
ในรูทของโปรเจ็กต์ หากต้องการสร้าง phpmd.baseline.xml
ข้างๆ ให้ทำดังนี้
~ $ phpmd /path/to/source ข้อความ phpmd.xml --generate-baseline
หากต้องการระบุเส้นทางไฟล์พื้นฐานที่กำหนดเองสำหรับการส่งออก:
~ $ phpmd /path/to/source ข้อความ phpmd.xml --generate-baseline --baseline-file /path/to/source/phpmd.baseline.xml
ตามค่าเริ่มต้น PHPMD จะดูถัดจาก phpmd.xml
สำหรับ phpmd.baseline.xml
หากต้องการเขียนทับลักษณะการทำงานนี้:
~ $ phpmd /path/to/source ข้อความ phpmd.xml --baseline-file /path/to/source/phpmd.baseline.xml
หากต้องการล้างไฟล์พื้นฐานที่มีอยู่และ ลบเฉพาะ การละเมิดที่ไม่มีอยู่อีกต่อไป:
~ $ phpmd /path/to/source ข้อความ phpmd.xml --update-baseline
มีให้เป็นส่วนหนึ่งของการสมัครสมาชิก Tidelift
ผู้ดูแล PHPMD
และแพ็คเกจอื่นๆ นับพันกำลังทำงานร่วมกับ Tidelift เพื่อให้การสนับสนุนเชิงพาณิชย์และการบำรุงรักษาสำหรับการพึ่งพาโอเพ่นซอร์สที่คุณใช้ในการสร้างแอปพลิเคชันของคุณ ประหยัดเวลา ลดความเสี่ยง และปรับปรุงประสิทธิภาพของโค้ด ในขณะเดียวกันก็จ่ายค่าตอบแทนให้กับผู้ดูแลตามที่คุณใช้ เรียนรู้เพิ่มเติม
หากคุณต้องการสนับสนุน PHPMD โปรดดูคู่มือการสนับสนุน