Издање ПХПСтан 1.0, статичког анализатора за ПХП код

После шест година развоја дошло је до првог стабилног издања статичког анализатора ПХПСтан 1.0, који вам омогућава да пронађете грешке у ПХП коду без његовог извршавања и коришћења јединичних тестова. Код пројекта је написан у ПХП-у и дистрибуиран под МИТ лиценцом.

Анализатор пружа 10 нивоа провере, у којима сваки следећи ниво проширује могућности претходног и пружа строжије провере:

  • Основне провере, дефинисање непознатих класа, функција и метода ($тхис), недефинисане варијабле и прослеђивање погрешног броја аргумената.
  • Идентификовање евентуално недефинисаних променљивих, непознатих магичних метода и својстава класа помоћу __цалл и __гет.
  • Откривање непознатих метода у свим изразима, не ограничавајући се на позиве преко $тхис. Провера ПХПДоцс.
  • Провера типова враћања и додељивање типова својствима.
  • Основна идентификација „мртвог“ (никад позваног) кода. Идентификујте инстанцеоф позиве који увек враћају нетачно, блокове "елсе" који се никада не активирају и код након повратка.
  • Провера типова аргумената који се прослеђују методама и функцијама.
  • Упозорење о недостатку напомена о типу информација.
  • Упозорење о нетачним типовима синдиката који дефинишу колекције од два или више типова.
  • Упозорење о позивању метода и приступу својствима са типовима "нуллабле".
  • Провера употребе „мешовитог“ типа.

    Примери идентификованих основних проблема:

    • Постојање класа које се користе у инстанцеоф, цатцх, типехинтс и другим језичким конструкцијама.
    • Постојање и доступност позваних метода и функција, као и број пренетих аргумената.
    • Провера да ли метода враћа податке истог типа као што је дефинисано у повратном изразу.
    • Постојање и видљивост својстава којима се приступа и провера декларисаних и стварних типова података који се користе у својствима.
    • Број параметара који се прослеђују спринтф/принтф позивима у блоку за форматирање стрингова је тачан.
    • Постојање променљивих које узимају у обзир блокове формиране операторима гранања и петљама.
    • Бескорисно пребацивање типова (нпр. "(стринг) 'фоо'") и строги тестови ("===" и "!==") на подацима са различитим типовима и операндима који увек враћају нетачно.

    Кључне иновације у ПХПСтан 1.0:

    • Имплементиран је ниво провере „9“, који проверава употребу „мешовитог“ типа, намењеног организовању пријема параметара функције са различитим типовима. Ниво XNUMX идентификује небезбедне употребе „мешовитог“, као што је прослеђивање вредности типа „мешано“ другом типу, позивање метода типа „мешано“ и приступање његовим својствима јер можда не постоје.
    • Контролишите да ли су повратне вредности идентичне за идентичне позиве функција користећи напомене @пхпстан-пуре и @пхпстан-импуре.
    • Анализа типа у конструкцијама три-цатцх-финалли користећи @тхровс напомене.
    • Идентификација дефинисаних, али неискоришћених интерних (приватних) својстава, метода и константи.
    • Прослеђивање некомпатибилних повратних позива функцијама низа као што су арраи_мап и усорт.
    • Инспекција типа за недостајуће напомене о типу.
    • Направљене су декларације типа компатибилне са ПХПДоцс-има, омогућавајући типове из порука о грешци да се користе у ПХПДоцс-у.

    Извор: опеннет.ру

  • Додај коментар