Išleistas PHPStan 1.0, statinis PHP kodo analizatorius

Po šešerių metų kūrimo įvyko pirmasis stabilus statinio analizatoriaus PHPStan 1.0 leidimas, leidžiantis rasti PHP kode klaidas jo nevykdant ir nenaudojant vienetinių testų. Projekto kodas parašytas PHP kalba ir platinamas pagal MIT licenciją.

Analizatorius suteikia 10 tikrinimo lygių, kuriuose kiekvienas paskesnis lygis išplečia ankstesnio galimybes ir pateikia griežtesnes patikras:

  • Pagrindiniai patikrinimai, nežinomų klasių, funkcijų ir metodų apibrėžimas ($this), neapibrėžti kintamieji ir neteisingo argumentų skaičiaus perdavimas.
  • Galimai neapibrėžtų kintamųjų, nežinomų magiškų metodų ir klasių savybių identifikavimas su __call ir __get.
  • Nežinomų metodų aptikimas visose išraiškose, neapsiribojant iškvietimais per $this. Tikrinami PHPDocs.
  • Grąžinimo tipų tikrinimas ir tipų priskyrimas ypatybėms.
  • Pagrindinis „negyvo“ (niekada nevadinamo) kodo identifikavimas. Nustatykite skambučius, kurie visada grąžina klaidingus, „kitus“ blokus, kurie niekada nesuaktyvina, ir koduokite po sugrįžimo.
  • Metodams ir funkcijoms perduodamų argumentų tipų tikrinimas.
  • Įspėjimas apie trūkstamus tipo informacijos komentarus.
  • Įspėjimas apie neteisingus sąjungos tipus, kurie apibrėžia dviejų ar daugiau tipų rinkinius.
  • Įspėjimas apie iškvietimo metodus ir prieigą prie ypatybių, kurių tipai „nullable“.
  • „Mišraus“ tipo naudojimo tikrinimas.

    Nustatyti pagrindinių problemų pavyzdžiai:

    • Klasių, naudojamų instancijoms, gaudymui, šrifto užuominoms ir kitoms kalbos konstrukcijoms, egzistavimas.
    • Iškviestų metodų ir funkcijų buvimas ir prieinamumas, taip pat priimtų argumentų skaičius.
    • Tikrinama, ar metodas grąžina duomenis to paties tipo, kaip apibrėžta grąžinimo išraiškoje.
    • Prieinamų ypatybių egzistavimas ir matomumas bei ypatybėse naudojamų deklaruotų ir faktinių duomenų tipų tikrinimas.
    • Sprintf/printf iškvietimams perduotų parametrų skaičius eilutės formatavimo bloke yra teisingas.
    • Kintamųjų buvimas atsižvelgiant į blokus, sudarytus iš išsišakojusių operatorių ir kilpų.
    • Nenaudingi tipai (pvz., "(string) 'foo") ir griežti bandymai ("===" ir "!==") su skirtingais tipais ir operandais, kurie visada pateikia klaidingus duomenis.

    Pagrindinės PHPStan 1.0 naujovės:

    • Įdiegtas „9“ patikros lygis, kuris tikrina „mišraus“ tipo naudojimą, skirtą organizuoti funkcijos priėmimą skirtingų tipų parametrams. XNUMX lygis nustato nesaugų „mišraus“ naudojimą, pvz., tipo „mišrus“ verčių perkėlimą į kitą tipą, „mišraus“ tipo metodų iškvietimą ir prieigą prie jo savybių, nes jų gali nebūti.
    • Naudodami @phpstan-pure ir @phpstan-impure anotacijas valdykite, ar grąžinimo reikšmės yra identiškos identiškiems funkcijų iškvietimams.
    • Tipo analizė „try-catch-finally“ konstrukcijoje naudojant @throws komentarus.
    • Apibrėžtų, bet nepanaudotų vidinių (privačių) savybių, metodų ir konstantų identifikavimas.
    • Nesuderinamų atgalinių skambučių perdavimas masyvo funkcijoms, tokioms kaip array_map ir usort.
    • Tipo patikrinimas, ar trūksta rašto užuominų komentarų.
    • Padarė tipo deklaracijas, suderinamas su PHPDocs, leidžiančias PHPDocs naudoti tipus iš klaidų pranešimų.

    Šaltinis: opennet.ru

  • Добавить комментарий