Plugin untuk alat analisis statis php_codesniffer yang menambahkan analisis penggunaan variabel bermasalah.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() tanpa didefinisikan. (Sniff Code: VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member digunakan di luar ruang lingkup kelas. (Sniff Codes: VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass atau VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) Analisis variabels membutuhkan php 5.4 atau lebih tinggi dan php codesniffer versi 3.5.6 atau lebih tinggi.
Ini adalah metode termudah.
Pertama, instal phpcodesniffer-composer-installer untuk proyek Anda jika Anda belum melakukannya. Ini juga akan menginstal PHPC.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
Kemudian pasang standar ini.
composer require --dev sirbrillig/phpcs-variable-analysis
Anda kemudian dapat menyertakan mengendus dengan menambahkan baris seperti berikut ke file phpcs.xml Anda.
<rule ref="VariableAnalysis"/>
Itu seharusnya berhasil setelah itu!
Instal php_codesniffer (phpcs) dengan mengikuti instruksi instalasinya (via komposer, phar file, pir, atau git checkout).
Pastikan versi PHP_CODESNIFFER cocok dengan persyaratan kami.
Instal Variableanalisis. Unduh file zip atau tar.gz dari halaman rilis terbaru Variableanalysis. Perluas file dan ganti nama direktori yang dihasilkan ke phpcs-variable-analysis . Pindahkan direktori ke tempat di mana Anda ingin menjaga semua standar PHPCS Anda.
Tambahkan jalur standar yang baru diinstal ke konfigurasi PHP_CODESNIFfer Installed_Paths. Perintah berikut harus menambahkan standar baru ke standar Anda yang ada (pastikan untuk memasok jalur aktual ke direktori yang Anda buat di atas).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
Jika Anda tidak memiliki standar lain yang terpasang, Anda dapat melakukan ini dengan lebih mudah (lagi, pastikan untuk memasok jalur yang sebenarnya):
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
Ada berbagai opsi untuk menyesuaikan perilaku analisis variable, lihatlah aturan yang disertakan.xml. Contoh untuk mengomentari contoh konfigurasi.
Opsi yang tersedia adalah sebagai berikut:
allowUnusedFunctionParameters (bool, default false ): Jika diatur ke argumen fungsi yang benar tidak akan pernah ditandai sebagai tidak digunakan.allowUnusedCaughtExceptions (bool, default true ): Jika diatur ke true, variabel pengecualian yang tertangkap tidak akan pernah ditandai sebagai tidak digunakan.allowUnusedParametersBeforeUsed (bool, default true ): Jika diatur ke argumen fungsi yang benar dan tidak digunakan akan diabaikan jika diikuti oleh argumen fungsi yang digunakan.allowUnusedVariablesBeforeRequire (bool, default false ): Jika disetel ke true, variabel yang ditentukan sebelum require , require_once , include , atau include_once tidak akan ditandai sebagai tidak digunakan. Mereka mungkin dimaksudkan untuk file yang diperlukan.allowUndefinedVariablesInFileScope (bool, default false ): Jika diatur ke variabel yang benar dan tidak terdefinisi dalam ruang lingkup tingkat atas file tidak akan pernah ditandai sebagai tidak terdefinisi. Ini dapat berguna untuk file template yang menggunakan banyak variabel global yang ditentukan di tempat lain.allowUnusedVariablesInFileScope (bool, default false ): Jika diatur ke variabel yang benar dan tidak digunakan dalam ruang lingkup tingkat atas file tidak akan pernah ditandai sebagai tidak digunakan. Ini dapat membantu ketika mendefinisikan banyak variabel global untuk digunakan di tempat lain.validUnusedVariableNames (String, default null ): Daftar nama variabel placeholder yang ingin Anda abaikan dari peringatan variabel yang tidak digunakan. Misalnya, untuk mengabaikan variabel $junk dan $unused , ini bisa diatur ke 'junk unused' .ignoreUnusedRegexp (String, Default null ): String RegExp PHP (perhatikan bahwa ini membutuhkan pembatas eksplisit) untuk variabel yang ingin Anda abaikan dari peringatan variabel yang tidak digunakan. Misalnya, untuk mengabaikan variabel $_junk dan $_unused , ini dapat diatur ke '/^_/' .validUndefinedVariableNames (String, Default null ): Daftar nama variabel placeholder yang ingin Anda abaikan dari peringatan variabel yang tidak ditentukan. Misalnya, untuk mengabaikan variabel $post dan $undefined , ini dapat diatur untuk 'post undefined' . Ini dapat digunakan dalam kombinasi dengan validUndefinedVariableRegexp .validUndefinedVariableRegexp (String, Default null ): String RegExp PHP (perhatikan bahwa ini memerlukan pembatas eksplisit) untuk variabel yang ingin Anda abaikan dari peringatan variabel yang tidak ditentukan. Misalnya, untuk mengabaikan variabel $post dan $undefined , ini dapat diatur ke '/^(post|undefined)$/' . Ini dapat digunakan dalam kombinasi dengan validUndefinedVariableNames .allowUnusedForeachVariables (bool, default true ): Jika diatur ke nilai true, tidak digunakan dari key => value dalam loop foreach tidak akan pernah ditandai sebagai tidak digunakan.sitePassByRefFunctions (String, Default null ): Daftar fungsi khusus yang lulus dalam variabel untuk diinisialisasi dengan referensi (misalnya preg_match() ) dan karenanya tidak memerlukan variabel tersebut untuk didefinisikan sebelumnya. Daftar ini dipisahkan ruang dan setiap entri adalah dari bentuk functionName:1,2 . Nama fungsi datang pertama diikuti oleh usus besar dan daftar nomor argumen yang dipisahkan koma (mulai dari 1) yang harus dianggap sebagai definisi variabel. Nilai khusus ... dalam daftar argumen akan menyebabkan semua argumen setelah angka terakhir dianggap sebagai definisi variabel.allowWordPressPassByRefFunctions (bool, default false ): Jika diatur ke true, daftar fungsi lulus-per-referensi WordPress yang umum akan ditambahkan ke daftar yang PHP sehingga lewat variabel yang tidak terdefinisi ke fungsi-fungsi ini (untuk diinisialisasi dengan referensi) akan diizinkan.Untuk mengatur opsi ini, Anda harus menggunakan XML di aturan Anda. Untuk detailnya, lihat halaman Sniff Properties yang dapat disesuaikan dengan PHPCS. Berikut adalah contoh yang mengabaikan semua variabel yang dimulai dengan garis bawah:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >Ini bercabang dari karya luar biasa di https://github.com/illusori/php_codesniffer-variableanalysiss
Harap buka masalah atau PR di repositori ini.
Perubahan apa pun harus disertai dengan tes dan harus lulus analisis serat dan statis. Harap gunakan PHPDOC (bukan tipe aktual) untuk menyatakan jenis karena ini harus berjalan dalam PHP 5.4.
Untuk menjalankan tes, pastikan komposer diinstal, lalu jalankan:
composer install # you only need to do this once
composer test
Untuk menjalankan serat, gunakan:
composer lint
Untuk menjalankan analisis statis, gunakan:
composer phpstan