Altı yıllık geliştirme sürecinin ardından, PHP kodundaki hataları, onu çalıştırmadan ve birim testleri kullanmadan bulmanızı sağlayan statik analizör PHPStan 1.0'ın ilk kararlı sürümü yayınlandı. Proje kodu PHP ile yazılmış ve MIT lisansı altında dağıtılmıştır.
Analizör, her bir sonraki seviyenin bir önceki seviyenin yeteneklerini genişlettiği ve daha sıkı kontroller sağladığı 10 kontrol seviyesi sağlar:
Tespit edilen temel sorunlara örnekler:
- Instanceof, catch, typehint ve diğer dil yapılarında kullanılan sınıfların varlığı.
- Çağrılan yöntemlerin ve işlevlerin varlığı ve kullanılabilirliği ile iletilen bağımsız değişkenlerin sayısı.
- Yöntemin, dönüş ifadesinde tanımlananla aynı türde veri döndürüp döndürmediğinin kontrol edilmesi.
- Erişilen özelliklerin varlığı ve görünürlüğü ve özelliklerde kullanılan bildirilen ve gerçek veri türlerinin kontrol edilmesi.
- Dize biçimlendirme bloğundaki sprintf/printf çağrılarına iletilen parametrelerin sayısı doğrudur.
- Dallanma operatörleri ve döngülerin oluşturduğu blokları dikkate alan değişkenlerin varlığı.
- Her zaman false döndüren farklı tür ve işlenenlere sahip veriler üzerinde gereksiz tür atamaları (örneğin, "(string) 'foo'") ve katı testler ("===" ve "!==").
PHPStan 1.0'daki önemli yenilikler:
- Fonksiyonun farklı tiplerdeki parametrelerin alımını organize etmek amacıyla "karışık" tipin kullanımını kontrol eden "9" kontrol seviyesi uygulanmıştır. Düzey XNUMX, "mixed" türündeki değerlerin başka bir türe aktarılması, "mixed" türündeki yöntemlerin çağrılması ve var olmayabilecekleri için özelliklerine erişilmesi gibi "mixed" türünün güvenli olmayan kullanımlarını tanımlar.
- @phpstan-pure ve @phpstan-impure ek açıklamalarını kullanarak aynı işlev çağrıları için dönüş değerlerinin aynı olup olmadığını kontrol edin.
- @throws ek açıklamalarını kullanarak try-catch-finally yapılarında analiz yazın.
- Tanımlanmış ancak kullanılmayan dahili (özel) özelliklerin, yöntemlerin ve sabitlerin tanımlanması.
- Uyumsuz geri aramaların array_map ve usort gibi dizi işlevlerine iletilmesi.
- Eksik yazım ipucu ek açıklamaları için tür denetimi.
- Tür bildirimleri PHPDocs ile uyumlu hale getirildi, hata iletilerindeki türlerin PHPDocs'ta kullanılmasına izin verildi.
Kaynak: opennet.ru
