De release van PHPStan 1.0, een statische code-analyser voor PHP.

Na zes jaar ontwikkeling is de eerste stabiele versie van de statische analyser PHPStan 1.0 gepresenteerd. Deze maakt het mogelijk om fouten in PHP-code te vinden zonder deze uit te voeren of unit-tests te gebruiken. De code van het project is geschreven in PHP en wordt verspreid onder de MIT-licentie.

De analyzer biedt 10 niveaus van controle, waarbij elk volgend niveau de mogelijkheden van het vorige uitbreidt en strengere controles biedt:

  • Basiscontroles, identificatie van onbekende klassen, functies en methoden ($this), ongedefineerde variabelen, evenals het doorgeven van een onjuist aantal argumenten.
  • Identificatie van mogelijk ongedefineerde variabelen, onbekende magic-methoden en klasse-eigenschappen met __call en __get.
  • Identificatie van onbekende methoden in alle uitdrukkingen, niet alleen beperkt tot aanroepen via $this. Controle van PHPDocs.
  • Controle van geretourneerde types en toewijzing van types aan eigenschappen.
  • Basisidentificatie van 'dode' (nooit aangeroepen) code. Identificatie van instanceof-aanroepen die altijd false retourneren, nooit triggerende 'else'-blokken en code die na return staat.
  • Controle van de types van argumenten die naar methoden en functies worden doorgegeven.
  • Waarschuwing voor het ontbreken van annotaties met type-informatie.
  • Waarschuwing voor onjuiste union-types die collecties van twee of meer types definiëren.
  • Waarschuwing voor het aanroepen van methoden en toegang tot eigenschappen met 'nullable' types.
  • Controle van het gebruik van het type 'mixed'.

    Voorbeelden van geïdentificeerde basisproblemen:

    • Het bestaan van klassen die worden gebruikt in instanceof, catch, typehints en andere taalkundige constructies.
    • Het bestaan en de beschikbaarheid van aanroepbare methoden en functies, evenals het aantal doorgegeven argumenten.
    • Controle of een methode gegevens retourneert met hetzelfde type als gedefinieerd in de return-uitdrukking.
    • Het bestaan en de zichtbaarheid van eigenschappen die worden aangesproken, evenals de controle van de gedeclareerde en feitelijke datatypes die worden gebruikt in die eigenschappen.
    • De juistheid van het aantal parameters dat in sprintf/printf-aanroepen is doorgegeven in het strformatteerblok.
    • Het bestaan van variabelen rekening houdend met blokken die worden gevormd door vertakking- en lussnelheidsconstructies.
    • Nutteloze typeconversies (bijvoorbeeld '(string) 'foo'') en strikte controles ('===' en '!==') van gegevens met verschillende types en operandwaarden die altijd false retourneren.

    Belangrijke vernieuwingen in PHPStan 1.0:

    • Het niveau 9 van de controle is geïmplementeerd, dat controles uitvoert op het gebruik van het type "mixed", bedoeld voor het aannemen van parameters met verschillende types. Het negende niveau identificeert onveilige manieren van gebruik van "mixed", zoals het doorgeven van waarden van het type "mixed" aan een ander type, het aanroepen van methoden met het type "mixed" en het aanspreken van zijn eigenschappen, aangezien deze mogelijk niet bestaan.
    • Beheer van de controle van de identiteit van de geretourneerde waarden voor identieke functie-aanroepen met gebruik van de annotaties @phpstan-pure en @phpstan-impure.
    • Type-analyse in try-catch-finally-constructies met gebruik van de annotaties @throws.
    • Detectie van bepaalde, maar ongebruikte interne (private) eigenschappen, methoden en constanten.
    • Doorgeven van incompatibele callback-aanroepen in functies die met arrays werken, zoals array_map en usort.
    • Inspectie van types voor ontbrekende typehint-annotaties.
    • De compatibiliteit van type-omschrijvingen met PHPDocs is gewährleistet, waardoor het mogelijk is om in PHPDocs types uit foutmeldingen te gebruiken.

    Bron: opennet.ru

  • Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster