Apakah ada alat analisis statis untuk file sumber PHP? Biner itu sendiri dapat memeriksa kesalahan sintaks, tapi saya mencari sesuatu yang lebih, seperti:
- tugas variabel yang tidak digunakan
- array yang ditugaskan tanpa diinisialisasi terlebih dahulu
- dan mungkin peringatan kode gaya
- ...
php
code-analysis
static-analysis
Eswald
sumber
sumber
Jawaban:
Jalankan php dalam mode-lint dari baris perintah untuk memvalidasi sintaksis tanpa eksekusi:
php -l FILENAME
Analisis statis tingkat tinggi meliputi:
Analisis tingkat lebih rendah meliputi:
Analisis runtime, yang lebih berguna untuk beberapa hal karena sifat dinamis PHP, meliputi:
Dokumentasi perpustakaan phpdoc dan doxygen melakukan semacam analisis kode. Doxygen, misalnya, dapat dikonfigurasi untuk membuat grafik pewarisan yang bagus dengan graphviz .
Pilihan lain adalah xhprof , yang mirip dengan xdebug, tetapi lebih ringan, sehingga cocok untuk server produksi. Alat ini mencakup antarmuka berbasis PHP.
sumber
php -l
hanya bisa membaca satu file input pada satu waktu (yaitu, itu tidak akan berfungsi jika Anda melakukannyaphp -l file1.php file2.php
). Alih-alih, Anda perlu menggunakan-n 1
opsi, yangxargs
hanya memberitahu untuk menggunakan satu jalur input per proses perintah. Alih-alih itu akan menyebabkannya berjalanphp -l file1.php
diikuti olehphp -l file2.php
, secara terpisah. Pada saat yang sama, Anda dapat menggunakan-P <n>
untuk menjalankan proses "n" pada suatu waktu, untuk memparalelkan eksekusi:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
bekerja andal.php -l
) untuk bekerja, Anda harus mengaturdisplay_errors = on
diphp.ini
, jika tidak, anda hanya akan mendapatkan pesan generik tentang ada menjadi kesalahan sintaks tetapi tidak ada rincian tentang apa yang error (s) atau apa line (s).-d
sakelar. Misalnyaphp -l -d display_errors=on $FILENAME
Serat PHP online
PHPLint
Variabel unitialized diperiksa . Link 1 dan 2 sepertinya sudah melakukan ini dengan baik.
Saya tidak bisa mengatakan saya telah menggunakan semua ini secara intensif, :)
sumber
Untuk kelengkapan - juga periksa phpCallGraph .
sumber
PHP Mess Detector luar biasa dan cepat.
sumber
Saya telah mencoba menggunakan $ php -l dan beberapa alat lainnya. Namun yang terbaik dalam pengalaman saya (YMMV, tentu saja) adalah scheck of pfff toolset . Saya mendengar tentang pfff di Quora ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Anda dapat mengkompilasi dan menginstalnya. Tidak ada paket yang bagus (di Debian mint saya, saya harus menginstal libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev dan dependensi libgimp2.0-dev terlebih dahulu) tetapi harus bernilai intsall.
Hasilnya dilaporkan seperti
sumber
Lihat CloneDR Semantic Designs , alat "deteksi kloning" yang menemukan kode salin / tempel / edit. Ini akan menemukan fragmen kode yang tepat dan dekat, terlepas dari spasi, komentar dan bahkan perubahan nama variabel. Contoh laporan deteksi untuk PHP dapat ditemukan di situs web tersebut. (Saya penulisnya).
sumber
NetBeans IDE memeriksa kesalahan sintaks, variabel yang tidak dapat digunakan, dan semacamnya. Ini tidak otomatis, tetapi berfungsi dengan baik untuk proyek kecil atau menengah.
sumber
Ada alat baru yang disebut nWire untuk PHP . Ini adalah plugin eksplorasi kode untuk Eclipse PDT dan Zend Studio 7.x. Ini memungkinkan analisis kode waktu-nyata untuk PHP dan menyediakan alat-alat berikut:
sumber
PHP PMD (project mess detector) dan PHP CPD (copy paste detector) sebagai bagian dari PHPUnit
sumber
Ada RIPS - Penganalisa kode sumber statis untuk kerentanan dalam skrip PHP . Sumber-sumber RIPS tersedia di SourceForge .
Dari situs RIPS:
sumber
Ada alat yang benar-benar baru untuk analisis kode statis yang disebut PHP Analyzer .
Di antara banyak jenis analisis statis, ini juga menyediakan fungsi dasar perbaikan otomatis, lihat dokumentasi .
UPDATE: PHP-Analyzer sekarang sudah tidak digunakan lagi tetapi Anda masih bisa mengaksesnya di cabang lawas
sumber
Anda mungkin ingin mencoba mengompilasi dengan hiphop Facebook.
Itu melakukan analisis statis pada seluruh proyek, dan mungkin apa yang Anda cari.
https://github.com/facebook/hiphop-php
sumber