
Sangat mudah untuk menemukan elemen kelas pribadi yang tidak digunakan, karena mereka tidak digunakan di kelas itu sendiri. Tapi bagaimana dengan metode/properti/konstanta publik?
final class Book
{
public function getTitle(): string
{
// ...
}
- public function getSubtitle(): string
- {
- // ...
- }
}Bagaimana kita bisa mendeteksi elemen publik yang tidak digunakan?
Itulah yang dilakukan paket ini.
Teknik ini sangat berguna untuk proyek -proyek pribadi dan untuk mendeteksi pengubah public yang digunakan secara tidak sengaja yang harus diubah menjadi private seperti yang hanya disebut secara lokal.
composer require tomasvotruba/unused-public --devPaket ini tersedia untuk versi PHP 7.2+.
Dengan pemasang ekstensi phpstan, semuanya siap dijalankan.
Aktifkan setiap item sendiri dengan konfigurasi sederhana:
# phpstan.neon
parameters :
unused_public :
methods : true
properties : true
constants : trueApakah Anda memiliki ratusan metode publik yang dilaporkan? Anda tidak punya waktu untuk memeriksa semuanya, tetapi ingin menanganinya secara bertahap?
Atur konfigurasi % yang diizinkan maksimum sebagai gantinya:
# phpstan.neon
parameters :
unused_public :
methods : 2.5Ini berarti maksimum 2,5 % dari semua metode publik diizinkan sebagai tidak digunakan:
Apakah Anda ingin memeriksa panggilan metode khusus lokal yang tidak boleh dihapus, tetapi diubah menjadi private / protected sebagai gantinya?
# phpstan.neon
parameters :
unused_public :
local_methods : true Beberapa metode hanya digunakan dalam templat ranting atau blade, dan dapat dilaporkan palsu secara positif sebagai tidak digunakan.
{{ book. getTitle () }}Bagaimana kita bisa mengecualikan mereka? Tambahkan Direktori Template Twig atau Blade Anda di Config untuk mengecualikan nama metode:
# phpstan.neon
parameters :
unused_public :
template_paths :
- templates Dalam beberapa kasus, aturan melaporkan positif palsu:
Vendor open-source merancang API publik untuk digunakan oleh proyek. Apakah elemen dilaporkan tidak digunakan, tetapi sebenarnya dirancang untuk digunakan publik?
Tandai kelas atau elemen dengan anotasi @api untuk melewatkannya:
final class Book
{
/**
* @api
*/
public function getName ()
{
return $ this -> name ;
}
}