PHPStan 1.0 чыгаруу, PHP коду үчүн статикалык анализатор

Алты жылдык иштеп чыгуудан кийин PHPStan 1.0 статикалык анализаторунун биринчи туруктуу чыгарылышы ишке ашты, ал PHP кодундагы каталарды аны аткарбастан жана бирдик тесттерин колдонбостон табууга мүмкүндүк берет. Долбоордун коду PHPде жазылган жана MIT лицензиясы боюнча таратылат.

Анализатор текшерүүнүн 10 деңгээлин камсыз кылат, мында ар бир кийинки деңгээл мурункусунун мүмкүнчүлүктөрүн кеңейтет жана катуу текшерүүлөрдү камсыз кылат:

  • Негизги текшерүүлөр, белгисиз класстарды, функцияларды жана методдорду аныктоо ($this), аныкталбаган өзгөрмөлөр жана туура эмес сандагы аргументтерди өткөрүү.
  • __call жана __get менен мүмкүн аныкталбаган өзгөрмөлөрдү, белгисиз сыйкырдуу ыкмаларды жана класстардын касиеттерин аныктоо.
  • $this аркылуу чалуулар менен эле чектелбестен, бардык туюнтмалардагы белгисиз ыкмаларды аныктоо. PHPDocs текшерилүүдө.
  • Кайтаруунун түрлөрүн текшерүү жана касиеттерге типтерди дайындоо.
  • "Өлгөн" (эч качан чакырылбаган) коддун негизги идентификациясы. Ар дайым жалган деп жооп берген чалуулардын, эч качан күйбөгөн "else" блокторун жана кайтарылгандан кийин кодду аныктаңыз.
  • Методдорго жана функцияларга берилген аргументтердин түрлөрүн текшерүү.
  • Маалыматтын аннотацияларын жок кылуу жөнүндө эскертүү.
  • Эки же андан көп түрдөгү коллекцияларды аныктаган туура эмес бирикме түрлөрү жөнүндө эскертүү.
  • Чакыруу ыкмалары жана "nullable" түрлөрү менен касиеттерге жетүү жөнүндө эскертүү.
  • «Аралаш» түрүн колдонууну текшерүү.

    Негизги көйгөйлөрдүн мисалдары аныкталган:

    • 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

  • Комментарий кошуу