Rilaxx ta' PHPStan 1.0, analizzatur statiku għall-kodiċi PHP

Wara sitt snin ta 'żvilupp, seħħet l-ewwel rilaxx stabbli tal-analizzatur statiku PHPStan 1.0, li jippermettilek issib żbalji fil-kodiċi PHP mingħajr ma tesegwixxiha u tuża testijiet tal-unità. Il-kodiċi tal-proġett huwa miktub bil-PHP u mqassam taħt il-liċenzja MIT.

L-analizzatur jipprovdi 10 livelli ta 'kontroll, li fihom kull livell sussegwenti jespandi l-kapaċitajiet ta' dak preċedenti u jipprovdi kontrolli aktar stretti:

  • Kontrolli bażiċi, li jiddefinixxu klassijiet, funzjonijiet u metodi mhux magħrufa ($this), varjabbli mhux definiti, u jgħaddu n-numru ħażin ta 'argumenti.
  • Identifikazzjoni ta' varjabbli possibbilment mhux definiti, metodi maġiċi mhux magħrufa u proprjetajiet ta' klassijiet b'__call u __get.
  • Sejbien ta' metodi mhux magħrufa fl-espressjonijiet kollha, mhux limitati għal sejħiet permezz ta' $this. Iċċekkjar PHPDocs.
  • Iċċekkjar tat-tipi ta 'ritorn u l-assenjazzjoni ta' tipi lill-proprjetajiet.
  • Identifikazzjoni bażika ta '"mejjet" (qatt imsejħa) kodiċi. Identifika istanza ta' sejħiet li dejjem jirritornaw foloz, blokki "inkella" li qatt ma jisparaw, u kodiċi wara r-ritorn.
  • Iċċekkjar tat-tipi ta 'argumenti mgħoddija lill-metodi u l-funzjonijiet.
  • Twissija dwar annotazzjonijiet ta' informazzjoni tat-tip nieqsa.
  • Twissija dwar tipi ta' unjoni mhux korretti li jiddefinixxu kollezzjonijiet ta' żewġ tipi jew aktar.
  • Twissija dwar metodi ta' sejħa u aċċess għal proprjetajiet b'tipi "nullable".
  • Iċċekkjar l-użu tat-tip "imħallat".

    Eżempji ta' problemi sottostanti identifikati:

    • L-eżistenza ta' klassijiet użati f'każ ta', catch, typehnts u kostruzzjonijiet ta' lingwa oħra.
    • L-eżistenza u d-disponibbiltà ta 'metodi u funzjonijiet imsejħa, kif ukoll in-numru ta' argumenti mgħoddija.
    • Iċċekkja li l-metodu jirritorna data bl-istess tip kif definit fl-espressjoni tar-ritorn.
    • L-eżistenza u l-viżibilità tal-proprjetajiet li qed jiġu aċċessati, u l-iċċekkjar tat-tipi tad-dejta ddikjarati u attwali użati fil-proprjetajiet.
    • In-numru ta 'parametri mgħoddija lil sejħiet sprintf/printf fil-blokk tal-ifformattjar tal-istring huwa korrett.
    • L-eżistenza ta 'varjabbli b'kont meħud ta' blokki ffurmati minn operaturi ta 'fergħat u loops.
    • Casts tat-tip inutli (eż. "(string) 'foo'") u testijiet stretti ("===" u "!==") fuq data b'tipi differenti u operandi li dejjem jirritorna foloz.

    Innovazzjonijiet ewlenin f'PHPStan 1.0:

    • Ġie implimentat il-livell ta 'kontroll "9", li jiċċekkja l-użu tat-tip "imħallat", maħsub biex jorganizza r-riċeviment tal-funzjoni ta' parametri b'tipi differenti. Livell disa 'jidentifika użi mhux sikuri ta' "imħallta", bħall-mogħdija ta 'valuri tat-tip "imħallta" għal tip ieħor, sejħa ta' metodi tat-tip "imħallta", u aċċess għall-proprjetajiet tiegħu minħabba li jistgħu ma jeżistux.
    • Ikkontrolla jekk il-valuri tar-ritorn humiex identiċi għal sejħiet ta' funzjoni identiċi billi tuża l-annotazzjonijiet @phpstan-pure u @phpstan-impure.
    • Analiżi tat-tip fil-kostruzzjonijiet try-catch-finally bl-użu ta' annotazzjonijiet @throws.
    • Identifikazzjoni ta' proprjetajiet, metodi u kostanti interni (privati) definiti iżda mhux użati.
    • Tgħaddi callbacks inkompatibbli għal funzjonijiet array bħal array_map u usort.
    • Spezzjoni tat-tip għal annotazzjonijiet typehint nieqsa.
    • Għamel dikjarazzjonijiet tat-tip kompatibbli ma' PHPDocs, li ppermettew li tipi minn messaġġi ta' żball jintużaw f'PHPDocs.

    Sors: opennet.ru

  • Żid kumment