Алты жылдык иштеп чыгуудан кийин PHPStan 1.0 статикалык анализаторунун биринчи туруктуу чыгарылышы ишке ашты, ал PHP кодундагы каталарды аны аткарбастан жана бирдик тесттерин колдонбостон табууга мүмкүндүк берет. Долбоордун коду PHPде жазылган жана MIT лицензиясы боюнча таратылат.
Анализатор текшерүүнүн 10 деңгээлин камсыз кылат, мында ар бир кийинки деңгээл мурункусунун мүмкүнчүлүктөрүн кеңейтет жана катуу текшерүүлөрдү камсыз кылат:
Негизги көйгөйлөрдүн мисалдары аныкталган:
- instanceof, catch, typehints жана башка тил конструкцияларында колдонулган класстардын болушу.
- Чакырылган ыкмалардын жана функциялардын болушу жана болушу, ошондой эле өткөн аргументтердин саны.
- Метод кайтаруу туюнтмасында аныкталгандай эле типтеги маалыматтарды кайтарарын текшерүү.
- Мүмкүнчүлүктөрдүн бар экендиги жана көрүнүүсү, ошондой эле касиеттерде колдонулган жарыяланган жана иш жүзүндөгү маалымат түрлөрүн текшерүү.
- Сапты форматтоо блогунда sprintf/printf чалууларына берилген параметрлердин саны туура.
- Тармактуу операторлор жана циклдер тарабынан түзүлгөн блокторду эске алуу менен өзгөрмөлөрдүн болушу.
- Пайдасыз типтеги кастингдер (мисалы, "(сап) 'foo'") жана катуу сыноолор ("===" жана "!==") ар кандай типтеги жана ар дайым жалганды кайтарган операнддар.
PHPStan 1.0догу негизги инновациялар:
- Функциянын ар кандай типтеги параметрлерди кабыл алуусун уюштуруу үчүн арналган “аралаш” типтин колдонулушун текшерген “9” текшерүү деңгээли ишке ашырылган. XNUMX-деңгээл "аралаш" түрүнүн маанилерин башка түргө өткөрүү, "аралаш" тибиндеги ыкмаларды чакыруу жана анын касиеттерине жетүү сыяктуу кооптуу колдонууларды аныктайт, анткени алар жок болушу мүмкүн.
- @phpstan-pure жана @phpstan-impure аннотацияларын колдонуп, бирдей функциялык чакыруулар үчүн кайтаруу маанилеринин бирдей экендигин көзөмөлдөңүз.
- @throws аннотацияларын колдонуп try-catch-finally конструкцияларында анализди териңиз.
- Белгиленген, бирок колдонулбаган ички (жеке) касиеттерди, методдорду жана константаларды аныктоо.
- array_map жана usort сыяктуу массив функцияларына шайкеш келбеген кайра чалууларды өткөрүү.
- Жазылган тексттин аннотацияларын жок кылуу үчүн текшерүү.
- Ката билдирүүлөрүнүн түрлөрүн PHPDocs'та колдонууга мүмкүндүк берип, PHPDocs менен шайкеш келген типтеги декларацияларды жасады.
Source: opennet.ru