Paglabas ng PHPStan 1.0, isang static analyzer para sa PHP code

Pagkatapos ng anim na taon ng pag-unlad, ang unang stable na release ng PHPStan 1.0 static analyzer ay naganap, na nagpapahintulot sa iyo na makahanap ng mga error sa PHP code nang hindi ito isinasagawa at gumagamit ng mga unit test. Ang code ng proyekto ay nakasulat sa PHP at ipinamahagi sa ilalim ng lisensya ng MIT.

Nagbibigay ang analyzer ng 10 antas ng pag-verify, kung saan ang bawat kasunod na antas ay nagpapalawak ng mga kakayahan ng nauna at nagbibigay ng mas mahigpit na pagsusuri:

  • Mga pangunahing pagsusuri, pagtukoy sa mga hindi kilalang klase, pag-andar at pamamaraan ($ito), hindi natukoy na mga variable, at pagpasa sa maling bilang ng mga argumento.
  • Paghahanap ng mga posibleng hindi natukoy na mga variable, hindi kilalang mga magic na pamamaraan at mga katangian ng klase na may __call at __get.
  • Ang pagtuklas ng mga hindi kilalang pamamaraan sa lahat ng expression, hindi limitado sa pagtawag sa pamamagitan ng $this. Sinusuri ang PHPDocs.
  • Sinusuri ang mga uri ng pagbabalik at pagtatalaga ng mga uri sa mga katangian.
  • Pangunahing pagtuklas ng "patay" (hindi tinawag) code. I-detect ang mga tawag sa instanceof palaging nagbabalik ng false, hindi kailanman magpapagana ng iba pang mga bloke, at code pagkatapos ng pagbabalik.
  • Sinusuri ang mga uri ng argumento na ipinasa sa mga pamamaraan at function.
  • Babala tungkol sa nawawalang uri ng mga anotasyon ng impormasyon.
  • Babala tungkol sa mga di-wastong uri ng unyon na tumutukoy sa mga koleksyon ng dalawa o higit pang uri.
  • Babala tungkol sa mga paraan ng pagtawag at pag-access sa mga property na may mga "nullable" na uri.
  • Sinusuri ang paggamit ng "halo-halong" uri.

    Mga halimbawa ng pinagbabatayan na mga problema na natukoy:

    • Pagkakaroon ng mga klase na ginamit sa instanceof, catch, typehints at iba pang mga construct ng wika.
    • Pagkakaroon at pagkakaroon ng mga tinatawag na pamamaraan at function, pati na rin ang bilang ng mga argumentong naipasa.
    • Sinusuri kung ang isang pamamaraan ay nagbabalik ng data na may parehong uri tulad ng tinukoy sa pahayag ng pagbabalik.
    • Pagkakaroon at visibility ng mga property na ina-access, at pagpapatunay ng mga ipinahayag at aktwal na uri ng data na ginagamit sa mga property.
    • Ang kawastuhan ng bilang ng mga parameter na ipinasa sa sprintf/printf na mga tawag sa string formatter.
    • Ang pagkakaroon ng mga variable, isinasaalang-alang ang mga bloke ng account na nabuo ng mga operator ng sangay at mga loop.
    • Mga walang kwentang typecast (tulad ng "(string) 'foo'") at mahigpit na pagsusuri ("===" at "!==") sa data na may iba't ibang uri at operand na palaging nagbabalik ng false.

    Mga pangunahing inobasyon ng PHPStan 1.0:

    • Ang antas ng tseke na "9" ay ipinatupad, na sumusuri sa paggamit ng "halo-halong" uri, na inilaan para sa pag-aayos ng pagtanggap ng mga parameter na may iba't ibang uri ng function. Inilalantad ng ika-siyam na antas ang mga hindi ligtas na paggamit ng "mixed", tulad ng pagpasa ng mga value ng uri na "mixed" sa ibang uri, pagtawag sa mga paraan ng type na "mixed", at pag-access sa mga property nito dahil maaaring wala ang mga ito.
    • Kinokontrol ang mga pagsusuri sa pagkakakilanlan ng return value para sa magkatulad na function na tawag gamit ang @phpstan-pure at @phpstan-impure annotation.
    • Uri ng pagsusuri sa try-catch-finally constructs gamit ang @throws annotation.
    • Pagkilala sa tinukoy ngunit hindi nagamit na panloob (pribado) na mga katangian, pamamaraan at mga constant.
    • Pagpasa ng mga hindi tugmang callback sa array function gaya ng array_map at usort.
    • Uri ng inspeksyon para sa mga nawawalang typehint annotation.
    • Ang mga deklarasyon ng uri ay ginawang tugma sa PHPDocs, na nagpapahintulot sa PHPDocs na gumamit ng mga uri mula sa mga mensahe ng error.

    Pinagmulan: opennet.ru

  • Magdagdag ng komento