PHPMD adalah proyek spin-off dari PHP Depend dan bertujuan untuk menjadi setara PHP dengan alat PMD Java yang terkenal. PHPMD dapat dilihat sebagai aplikasi frontend yang ramah pengguna untuk aliran metrik mentah yang diukur dengan PHP Depend.
https://phpmd.org
Lihat https://phpmd.org/download/index.html
Ketik phpmd [filename|directory[,filename|directory[,...]]] [report format] [ruleset file]
, yaitu:
mapi@arwen ~ $ phpmd php/PDepend/DbusUI/ xml aturan set.xml
Sedangkan file aturan rulesets.xml
akan terlihat seperti ini:
<? 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 >
Laporan xmlnya akan seperti ini:
<? 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 >
Anda dapat meneruskan string yang dipisahkan koma dengan daftar nama file atau nama direktori, yang berisi kode sumber PHP ke PHPMD.
Distribusi PHPMD Phar menyertakan file kumpulan aturan di dalam arsipnya, meskipun parameter "rulesets/codesize.xml" di atas terlihat seperti referensi sistem file.
Perhatikan bahwa keluaran defaultnya adalah XML, sehingga Anda dapat mengarahkannya ke file dan XSLT atau apa pun
Anda juga dapat menggunakan nama singkat untuk merujuk pada kumpulan aturan bawaan, seperti ini:
phpmd PHP/Depend/DbusUI/ukuran kode xml
Antarmuka baris perintah juga menerima argumen opsional berikut:
--verbose, -v, -vv, -vvv
- Tingkat verbositas keluaran. Akan mencetak lebih banyak informasi tentang apa yang sedang diproses atau di-cache. Akan dikirim ke STDERR
agar tidak mengganggu keluaran laporan. keluaran text
juga akan memiliki tautan ke dokumentasi aturan di bawah setiap kesalahan dan memformat lokasi sedemikian rupa sehingga sebagian besar IDE akan dikonversi menjadi tautan untuk membuka file di baris kesalahan saat diklik.--minimumpriority
- Ambang prioritas aturan; aturan dengan prioritas lebih rendah daripada aturan tersebut tidak akan digunakan.--reportfile
- Mengirim keluaran laporan ke file yang ditentukan, bukan target keluaran default STDOUT
.--suffixes
- String ekstensi nama file kode sumber valid yang dipisahkan koma, misalnya php,phtml.--exclude
- Rangkaian pola yang dipisahkan koma yang digunakan untuk mengabaikan direktori. Gunakan tanda bintang untuk mengecualikan berdasarkan pola. Misalnya *src/foo/*.php
atau *src/foo/*
--strict
- Laporkan juga node tersebut dengan anotasi @SuppressWarnings.--ignore-errors-on-exit
- akan keluar dengan kode nol, bahkan jika ada kesalahan.--ignore-violations-on-exit
- akan keluar dengan kode nol, meskipun ditemukan pelanggaran.--cache
- akan mengaktifkan cache hasil. Akan default ke .phpmd.result-cache.php
di direktori kerja saat ini.--cache-file
- bekerja sama dengan --cache
akan mengganti jalur file cache hasil default .phpmd.result-cache.php
ke jalur file yang diberikan.--cache-strategy
- mengatur strategi caching untuk menentukan apakah suatu file masih segar. Entah konten untuk mendasarkannya pada konten file, atau stempel waktu untuk mendasarkannya pada stempel waktu file yang dimodifikasi.--generate-baseline
- akan menghasilkan phpmd.baseline.xml
untuk pelanggaran yang ada di sebelah file definisi aturan. Jalur file yang mengalami pelanggaran akan relatif terhadap direktori kerja saat ini.--update-baseline
- akan menghapus semua pelanggaran dari phpmd.baseline.xml
yang sudah ada dan sudah tidak ada lagi. Pelanggaran baru _tidak_ akan ditambahkan. Jalur file pelanggaran akan berhubungan dengan direktori kerja saat ini.--baseline-file
- jalur file ke file xml dasar khusus. Jika tidak ada maka defaultnya adalah phpmd.baseline.xml
--color
- mengaktifkan warna dalam keluaran, misalnya penyaji teks akan menampilkan nama aturan dengan warna kuning dan deskripsi kesalahan dengan warna merah.--extra-line-in-excerpt
- tentukan berapa banyak baris tambahan yang ditambahkan ke cuplikan kode dalam format htmlContoh baris perintah:
phpmd PHP/Depend/DbusUI ukuran kode xml --reportfile "phpmd.xml" --suffixes "php,phtml"
Pilihannya bisa sebelum atau sesudah argumen. Nilainya dapat dipisahkan dengan spasi atau tanda sama dengan ( =
). Jadi, sintaks berikut ini setara dengan yang sebelumnya:
phpmd --reportfile="phpmd.xml" --suffixes="php,phtml" PHP/Depend/DbusUI ukuran kode xml
String yang dimulai dengan -
akan dikenali sebagai nama opsi. Jika Anda memiliki argumen yang dimulai dengan -
, tetapkan opsi terlebih dahulu, lalu gunakan --
untuk menandai awal yang eksplisit atau daftar argumen:
phpmd --reportfile "phpmd.xml" --suffixes "php,phtml" -- -foo/Ukuran kode folder xml
PHPMD menggunakan kumpulan aturan yang mengonfigurasi/mendefinisikan sekumpulan aturan yang akan diterapkan terhadap sumber yang diuji. Distribusi default PHPMD telah dikirimkan dengan beberapa set default, yang dapat digunakan langsung. Anda dapat memanggil alat cli PHPMD dengan nama set untuk menerapkan konfigurasi ini:
~ $ phpmd /path/ke/ukuran kode teks sumber
Namun bagaimana jika Anda ingin menerapkan lebih dari satu aturan yang ditetapkan terhadap sumber Anda? Anda juga dapat meneruskan daftar nama kumpulan aturan, dipisahkan dengan koma ke alat cli PHPMD:
~ $ phpmd /path/ke/ukuran kode teks sumber, kode yang tidak digunakan, penamaan
Anda juga dapat menggabungkan file kumpulan aturan khusus dengan kumpulan aturan bawaan:
~ $ phpmd /path/ke/ukuran kode teks sumber,/my/rules.xml
Itu saja. Dengan perilaku ini Anda dapat menentukan kombinasi kumpulan aturan Anda sendiri yang akan memeriksa kode sumber.
PHPMD juga memungkinkan Anda menentukan beberapa direktori sumber jika Anda ingin membuat satu keluaran untuk bagian tertentu dari kode Anda
~ $ phpmd /path/to/code,index.php,/another/place/with/code ukuran kode teks
Atau gunakan pola glob:
~ $ phpmd src/main/php/*/*/*{Renderer,Node}.php teks my/rules.xml
PHPMD juga dapat membaca input standar stdin:
~ $cat src/LayananSaya.php | phpmd - kirim pesan ke my/rules.xml
Jadi kode PHP yang akan dipindai mungkin dihasilkan oleh program lain belum tentu disimpan dalam file.
Alat baris perintah PHPMD saat ini mendefinisikan empat kode keluar yang berbeda.
--ignore-violations-on-exit
, yang akan menghasilkan angka 0 meskipun ditemukan pelanggaran.Saat ini PHPMD hadir dengan penyaji berikut:
Untuk proyek yang sudah ada, data dasar pelanggaran dapat dibuat. Semua pelanggaran pada garis dasar ini akan diabaikan dalam pemeriksaan lebih lanjut.
Pendekatan yang direkomendasikan adalah phpmd.xml
di root proyek. Untuk menghasilkan phpmd.baseline.xml
di sebelahnya:
~ $ phpmd /path/ke/teks sumber phpmd.xml --generate-baseline
Untuk menentukan jalur file dasar khusus untuk ekspor:
~ $ phpmd /path/ke/teks sumber phpmd.xml --generate-baseline --baseline-file /path/to/source/phpmd.baseline.xml
Secara default PHPMD akan terlihat di sebelah phpmd.xml
untuk phpmd.baseline.xml
. Untuk menimpa perilaku ini:
~ $ phpmd /path/ke/teks sumber phpmd.xml --baseline-file /path/to/source/phpmd.baseline.xml
Untuk membersihkan file dasar yang ada dan hanya menghapus pelanggaran yang sudah tidak ada lagi:
~ $ phpmd /path/ke/teks sumber phpmd.xml --update-baseline
Tersedia sebagai bagian dari Langganan Tidelift.
Pengelola PHPMD
dan ribuan paket lainnya bekerja sama dengan Tidelift untuk memberikan dukungan komersial dan pemeliharaan untuk dependensi sumber terbuka yang Anda gunakan untuk membangun aplikasi Anda. Menghemat waktu, mengurangi risiko, dan meningkatkan kesehatan kode, sekaligus membayar pengelola dependensi yang Anda gunakan. Pelajari lebih lanjut.
Jika Anda ingin berkontribusi pada PHPMD, silakan baca panduan kontribusi.