PHPStan 1.0 har slÀppts, en statisk analysator för PHP-kod.

Efter sex Ärs utveckling har den första stabila versionen av den statiska analysatorn PHPStan 1.0 slÀppts, vilket gör det möjligt att hitta fel i PHP-kod utan att köra den och utan att anvÀnda enhetstester. Projektets kod Àr skriven i PHP och distribueras under MIT-licensen.

Analysatorn erbjuder 10 nivÄer av kontroll, dÀr varje efterföljande nivÄ utökar funktionerna i den föregÄende och ger strÀngare kontroller:

  • GrundlĂ€ggande kontroller, identifiering av okĂ€nda klasser, funktioner och metoder ($this), icke-definierade variabler samt överföring av felaktigt antal argument.
  • Identifiering av potentiellt odefinierade variabler, okĂ€nda magiska metoder och klassens egenskaper med __call och __get.
  • Identifiering av okĂ€nda metoder i alla uttryck, inte begrĂ€nsat till anrop via $this. Kontroll av PHPDocs.
  • Kontroll av returtyper och tilldelning av typer till egenskaper.
  • GrundlĂ€ggande identifiering av "död" (aldrig kallad) kod. Identifiering av instanceof-anrop som alltid ger false, block "else" som aldrig intrĂ€ffar samt kod som kommer efter return.
  • Kontroll av argumenttyper som överförs till metoder och funktioner.
  • Varning om frĂ„nvaro av annotationer med typinformation.
  • Varning om felaktiga unionstyper som definierar samlingar av tvĂ„ eller fler typer.
  • Varning om anrop av metoder och Ă„tkomst till egenskaper med "nullable"-typer.
  • Kontroll av anvĂ€ndning av typen "mixed".

    Exempel pÄ identifierade grundlÀggande problem:

    • Existensen av klasser som anvĂ€nds i instanceof, catch, typehints och andra sprĂ„kstrukturer.
    • Existens och tillgĂ„ng till anropade metoder och funktioner, liksom antalet överförda argument.
    • Kontroll av att metoder returnerar data med samma typ som anges i returuttrycket.
    • Existens och synlighet av de egenskaper som refereras samt kontroll av deklarerade och faktiska datatyper som anvĂ€nds i egenskaper.
    • Korrekthet av antalet parametrar som överförs i anrop till sprintf/printf i block för strĂ€ngformatering.
    • Existensen av variabler med hĂ€nsyn till block som skapas av grenoperatorer och loopar.
    • Onödiga typomvandlingar (t.ex. "(string) 'foo'"), och strikta kontroller ("===" och "!==") av data med olika typer och operander som alltid ger false.

    Nyckelinnovationer i PHPStan 1.0:

    • Implementeringen av kontrollnivĂ„ "9" utför kontroller för anvĂ€ndning av typ "mixed", avsedd för att acceptera parametrar av olika typer. NivĂ„ nio identifierar osĂ€kra metoder att anvĂ€nda "mixed", som att överföra vĂ€rden av typen "mixed" till en annan typ, anropa metoder med typen "mixed" och komma Ă„t dess egenskaper, eftersom dessa kanske inte existerar.
    • Hantera identitetskontrollen av returvĂ€rden för likadana funktionsanrop med hjĂ€lp av annotationerna @phpstan-pure och @phpstan-impure.
    • Typanalys i ĐșĐŸĐœŃŃ‚Ń€ŃƒĐșцоо try-catch-finally med anvĂ€ndning av annotationerna @throws.
    • Identifiering av vissa, men oanvĂ€nda interna (private) egenskaper, metoder och konstanter.
    • Överföring av inkompatibla callback-anrop till funktionsmetoder som array_map och usort.
    • Inspektion av typer för saknade typehint-annoteringar.
    • Kompatibilitet av typbeskrivningar med PHPDocs sĂ€kerstĂ€lls, vilket möjliggör anvĂ€ndning av typer frĂ„n felmeddelanden i PHPDocs.

    KĂ€lla: opennet.ru

  • Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster