Rilis PHPStan 1.0, penganalisa statis kanggo kode PHP

Sawise nem taun pembangunan, release stabil pisanan saka analisa statis PHPStan 1.0 njupuk Panggonan, sing ngijini sampeyan kanggo nemokake kasalahan ing kode PHP tanpa nglakokaké lan nggunakake tes unit. Kode proyek ditulis ing PHP lan disebarake miturut lisensi MIT.

Analyzer nyedhiyakake 10 tingkat pamriksa, ing saben level sabanjure ngembangake kemampuan sadurunge lan menehi pamriksa sing luwih ketat:

  • Priksa dhasar, nemtokake kelas, fungsi lan cara sing ora dingerteni ($ iki), variabel sing ora ditemtokake, lan menehi argumen sing salah.
  • Ngenali variabel sing bisa ditemtokake, metode sihir sing ora dingerteni lan sifat kelas kanthi __call lan __get.
  • Deteksi cara sing ora dingerteni ing kabeh ekspresi, ora diwatesi kanggo telpon liwat $this. Priksa PHPDocs.
  • Priksa jinis bali lan nemtokake jinis kanggo properti.
  • Identifikasi dhasar kode "mati" (ora tau disebut). Ngenali instanceof telpon sing tansah bali palsu, "liyane" pamblokiran sing tau murub, lan kode sawise bali.
  • Priksa jinis argumen sing diterusake menyang metode lan fungsi.
  • Pènget babagan anotasi informasi jinis sing ilang.
  • Pènget babagan jinis union sing ora bener sing nemtokake koleksi saka rong jinis utawa luwih.
  • Pènget babagan cara nelpon lan ngakses properti kanthi jinis "nullable".
  • Priksa panggunaan jinis "campuran".

    Conto masalah dhasar sing diidentifikasi:

    • Anane kelas sing digunakake ing instanceof, catch, typehints lan konstruksi basa liyane.
    • Anane lan kasedhiyan metode lan fungsi sing diarani, uga jumlah argumen sing dilewati.
    • Priksa manawa metode kasebut ngasilake data kanthi jinis sing padha kaya sing ditegesake ing ekspresi bali.
    • Orane lan visibilitas properti sing diakses, lan mriksa jinis data sing diumumake lan nyata sing digunakake ing properti kasebut.
    • Jumlah paramèter sing diterusake menyang telpon sprintf/printf ing blok format string bener.
    • Anane variabel njupuk blok akun sing dibentuk dening operator cabang lan puteran.
    • Jinis ora ana gunane cast (contone. "(string) 'foo'") lan tes ketat ("===" lan "!==") ing data karo macem-macem jinis lan operand sing tansah bali palsu.

    Inovasi utama ing PHPStan 1.0:

    • Tingkat mriksa "9" wis dileksanakake, sing mriksa panggunaan jinis "campuran", sing dimaksudake kanggo ngatur panrima fungsi paramèter kanthi macem-macem jinis. Level XNUMX ngenali panggunaan "campuran" sing ora aman, kayata ngirim nilai saka jinis "campuran" menyang jinis liyane, nelpon metode jinis "campuran", lan ngakses properti kasebut amarga bisa uga ora ana.
    • Kontrol apa nilai bali identik kanggo telpon fungsi sing padha nggunakake anotasi @phpstan-pure lan @phpstan-impure.
    • Ketik analisis ing try-catch-finally constructs nggunakake @throws anotasi.
    • Identifikasi sifat, metode lan konstanta internal (pribadi) sing ditetepake nanging ora digunakake.
    • Nglewati callback sing ora kompatibel menyang fungsi array kayata array_map lan usort.
    • Inspeksi jinis kanggo anotasi tip sing ilang.
    • Pranyatan jinis digawe kompatibel karo PHPDocs, ngidini jinis pesen kesalahan digunakake ing PHPDocs.

    Source: opennet.ru

  • Add a comment