После шест година развоја дошло је до првог стабилног издања статичког анализатора ПХПСтан 1.0, који вам омогућава да пронађете грешке у ПХП коду без његовог извршавања и коришћења јединичних тестова. Код пројекта је написан у ПХП-у и дистрибуиран под МИТ лиценцом.
Анализатор пружа 10 нивоа провере, у којима сваки следећи ниво проширује могућности претходног и пружа строжије провере:
Примери идентификованих основних проблема:
- Постојање класа које се користе у инстанцеоф, цатцх, типехинтс и другим језичким конструкцијама.
- Постојање и доступност позваних метода и функција, као и број пренетих аргумената.
- Провера да ли метода враћа податке истог типа као што је дефинисано у повратном изразу.
- Постојање и видљивост својстава којима се приступа и провера декларисаних и стварних типова података који се користе у својствима.
- Број параметара који се прослеђују спринтф/принтф позивима у блоку за форматирање стрингова је тачан.
- Постојање променљивих које узимају у обзир блокове формиране операторима гранања и петљама.
- Бескорисно пребацивање типова (нпр. "(стринг) 'фоо'") и строги тестови ("===" и "!==") на подацима са различитим типовима и операндима који увек враћају нетачно.
Кључне иновације у ПХПСтан 1.0:
- Имплементиран је ниво провере „9“, који проверава употребу „мешовитог“ типа, намењеног организовању пријема параметара функције са различитим типовима. Ниво XNUMX идентификује небезбедне употребе „мешовитог“, као што је прослеђивање вредности типа „мешано“ другом типу, позивање метода типа „мешано“ и приступање његовим својствима јер можда не постоје.
- Контролишите да ли су повратне вредности идентичне за идентичне позиве функција користећи напомене @пхпстан-пуре и @пхпстан-импуре.
- Анализа типа у конструкцијама три-цатцх-финалли користећи @тхровс напомене.
- Идентификација дефинисаних, али неискоришћених интерних (приватних) својстава, метода и константи.
- Прослеђивање некомпатибилних повратних позива функцијама низа као што су арраи_мап и усорт.
- Инспекција типа за недостајуће напомене о типу.
- Направљене су декларације типа компатибилне са ПХПДоцс-има, омогућавајући типове из порука о грешци да се користе у ПХПДоцс-у.
Извор: опеннет.ру