РНР коды үшін статикалық анализатор PHPStan 1.0 шығарылымы

Алты жылдық дамудан кейін PHPS 1.0 статикалық анализаторының бірінші тұрақты шығарылымы орын алды, ол PHP кодындағы қателерді оны орындамай және бірлік сынақтарын қолданбай табуға мүмкіндік береді. Жоба коды PHP тілінде жазылған және MIT лицензиясы бойынша таратылады.

Анализатор тексерудің 10 деңгейін қамтамасыз етеді, онда әрбір келесі деңгей алдыңғысының мүмкіндіктерін кеңейтеді және неғұрлым қатаң тексерулерді қамтамасыз етеді:

  • Негізгі тексерулер, белгісіз сыныптарды, функцияларды және әдістерді анықтау ($this), анықталмаған айнымалылар және дұрыс емес дәлелдер санын беру.
  • Анықталмаған айнымалыларды, белгісіз сиқырлы әдістерді және __call және __get арқылы сыныптардың қасиеттерін анықтау.
  • $this арқылы шақырулармен шектелмей, барлық өрнектерде белгісіз әдістерді анықтау. PHPDocs тексерілуде.
  • Қайтару түрлерін тексеру және сипаттарға типтерді тағайындау.
  • «Өлі» (ешқашан шақырылмаған) кодтың негізгі сәйкестендіруі. Әрқашан жалған қайтарылатын қоңыраулар, ешқашан қосылмайтын "else" блоктары және қайтарылғаннан кейін кодты анықтаңыз.
  • Әдістер мен функцияларға берілген аргумент түрлерін тексеру.
  • Жетіспейтін түр ақпараты туралы ескерту.
  • Екі немесе одан да көп түрлердің жинақтарын анықтайтын қате біріктіру түрлері туралы ескерту.
  • Әдістерді шақыру және "нөлдік" түрлері бар сипаттарға қатынасу туралы ескерту.
  • «Аралас» түрінің қолданылуын тексеру.

    Анықталған негізгі проблемалардың мысалдары:

    • instanceof, catch, typehints және басқа тілдік құрылымдарда қолданылатын сыныптардың болуы.
    • Шақырылатын әдістер мен функциялардың болуы және қолжетімділігі, сондай-ақ берілген аргументтердің саны.
    • Әдіс қайтару өрнегінде анықталғандай бірдей түрдегі деректерді қайтаратынын тексеру.
    • Қатынасатын сипаттардың болуы және көрінуі және сипаттарда қолданылатын жарияланған және нақты деректер түрлерін тексеру.
    • Жолды пішімдеу блогында sprintf/printf шақыруларына жіберілген параметрлер саны дұрыс.
    • Тармақталған операторлар мен циклдар арқылы құрылған блоктарды есепке алатын айнымалылардың болуы.
    • Пайдасыз түрдегі трансляциялар (мысалы, "(жол) 'foo'") және қатаң сынақтар ("===" және "!==") әртүрлі типтері және әрқашан жалған мәнін беретін операндтары бар деректерге.

    PHPStan 1.0 негізгі инновациялары:

    • Функцияның әртүрлі типтегі параметрлерді қабылдауын ұйымдастыруға арналған «аралас» типті пайдалануды тексеретін «9» тексеру деңгейі енгізілді. XNUMX-деңгей «аралас» түрінің мәндерін басқа түрге беру, «аралас» түріндегі әдістерді шақыру және олардың болмауы мүмкін болғандықтан оның қасиеттеріне қол жеткізу сияқты «аралас» қауіпті пайдалануды анықтайды.
    • @phpstan-pure және @phpstan-impure аннотацияларын пайдаланып, бірдей функция шақырулары үшін қайтарылатын мәндердің бірдей екенін бақылаңыз.
    • @throws аннотацияларын пайдаланып try-catch-finally құрылымдарында талдау түрі.
    • Анықталған, бірақ пайдаланылмаған ішкі (жеке) қасиеттерді, әдістерді және тұрақтыларды анықтау.
    • array_map және usort сияқты массив функцияларына үйлеспейтін кері шақыруларды беру.
    • Жетіспейтін мәтіндік түсініктемелердің түрін тексеру.
    • PHPDocs жүйесінде қате туралы хабарлардың түрлерін пайдалануға мүмкіндік беретін PHPDocs-пен үйлесімді типтік мәлімдемелер жасалды.

    Ақпарат көзі: opennet.ru

  • пікір қалдыру