Lansarea PHPStan 1.0, un analizator static pentru cod PHP

După șase ani de dezvoltare, a fost lansată prima versiune stabilă a analizadorului static PHPStan 1.0, care permite identificarea erorilor în codul scris în PHP fără a-l executa și fără a utiliza teste unitare. Codul proiectului este scris în PHP și este distribuit sub licența MIT.

Analyzerul oferă 10 niveluri de verificare, fiecare nivel ulterior extinzând capacitățile precedentului și furnizând verificări mai stricte:

  • Verificări de bază, identificarea claselor, funcțiilor și metodelor necunoscute ($this), variabilelor nedefinite, precum și a transmiterii unui număr incorect de argumente.
  • Identificarea variabilelor probabil nedefinite, a metodelor magice necunoscute și a proprietăților claselor cu __call și __get.
  • Identificarea metodelor necunoscute în toate expresiile, fără a se limita la apeluri prin $this. Verificarea PHPDocs.
  • Verificarea tipurilor returnate și a tipurilor atribuite proprietăților.
  • Identificarea de bază a codului „mort” (niciodată apelat). Identificarea apelurilor instanceof care returnează întotdeauna false, blocuri „else” care nu se activează niciodată și codului care se află după return.
  • Verificarea tipurilor argumentelor transmise în metode și funcții.
  • Avertizare privind absența notelor de informare despre tipuri.
  • Avertizare despre tipurile union incorecte, care definesc colecții din două sau mai multe tipuri.
  • Avertizare privind apelurile metodelor și accesul la proprietăți cu tipuri „nullable”.
  • Verificarea utilizării tipului „mixed”.

    Exemple de probleme de bază identificate:

    • Existența claselor utilizate în instanceof, catch, typehints și alte construcții ale limbii.
    • Existența și disponibilitatea metodelor și funcțiilor apelabile, precum și numărul argumentelor transmise.
    • Verificarea returnării datelor de către metodă cu același tip care este definit în expresia return.
    • Existența și vizibilitatea proprietăților la care se face referire, precum și verificarea tipurilor de date declarate și efective utilizate în proprietăți.
    • Corectitudinea numărului de parametri transmiși în apelurile sprintf/printf în blocul de formatare a șirurilor.
    • Existența variabilelor în funcție de blocurile formate de operatorii de ramificare și ciclu.
    • Conversii de tip inutile (de exemplu, „(string) ‘foo’”) și verificări stricte („===” și „!==”) a datelor cu tipuri și operanzi diferiți, care returnează întotdeauna false.

    Inovațiile cheie PHPStan 1.0:

    • A fost implementat nivelul de verificare „9”, care efectuează verificări ale utilizării tipului „mixed”, destinat organizării recepției funcției parametrilor cu diferite tipuri. Nivelul nouă identifică metodele nesigure de utilizare a „mixed”, cum ar fi transmiterea valorilor de tip „mixed” către un alt tip, apelarea metodelor cu tipul „mixed” și accesarea proprietăților acestuia, deoarece ele pot să nu existe.
    • Managementul verificării identității valorilor de retur pentru apeluri identice de funcție folosind anotările @phpstan-pure și @phpstan-impure.
    • Analiza tipurilor în construcții try-catch-finally folosind anotările @throws.
    • Identificarea anumitor proprietăți interne (private), metode și constante, care sunt definite, dar neutilizate.
    • Transmiterea apelurilor callback incompatibile în funcțiile de manipulare a array-urilor, cum ar fi array_map și usort.
    • Inspectarea tipurilor pentru absența anotărilor typehint.
    • A fost asigurată compatibilitatea descrierilor de tip cu PHPDocs, ceea ce permite utilizarea tipurilor din mesajele de eroare în PHPDocs.

    Sursa: opennet.ro

  • Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster