AllInfo

Hur man statistiskt analyserar PHP -projekt med PHPStan

PHPStan är ett statiskt analyssystem för PHP -projekt. Den hittar fel i din kodbas genom att inspektera källfilerna. Du behöver inte köra din kod eller skriva tester manuellt för att upptäcka problem!

Termen “ statisk analys ” definieras som felsökningskod utan att den faktiskt körs. Det används oftast med tolkade språk, till exempel PHP, eftersom frågorna som det hittar tenderar att dyka upp vid sammanställningsstadiet på sammanställda språk.

Statisk analys tenderar att ge de bästa resultaten när de körs inom en välstrukturerad, starkt maskinskriven kodbas. PHPStans dokumentation ger råd om att “ modern objektorienterad kod ” kommer att gynnas mest, eftersom dessa projekt ger PHPStan mer information att arbeta med.

Lägga till PHPStan i ditt projekt

För att köra PHPStan måste du ha PHP 7.1 eller senare. Detta krav gäller endast den version av PHP som används för att köra PHPStan själv. Verktyget kan analysera källfiler som är inriktade på äldre versioner av PHP.

Det rekommenderas att du använder Composer för att lägga till PHPStan som ett beroende:

composer require –dev phpstan/phpstan Advertisement

PHPStan -binären läggs till i ditt projekt på vendor/bin/phpstan. Du kan nu använda den för att analysera din kodbas för första gången:

vendor/bin/phpstan analysera src

Kommandot som visas ovan kör PHPStans tester mot alla källfiler i din src -katalog. Beroende på storleken på din kodbas kan det ta några minuter att slutföra.

< /p>

Du kommer att se en grön “ [OK] Inga fel ” meddelande om alla test klarar. Annars visas listan över fel. Följ anvisningarna som visas för att lösa varje fel innan du kör PHPStan igen.

Feltyper och nivåer

PHPStan innehåller en mängd kontroller som täcker en mängd olika möjliga kodbasproblem. Några av de vanligaste som du kommer att stöta på inkluderar följande:

Reglerna är sorterade i 9 olika “ nivåer &#8221 ;, märkta från 0 till 8. Specialnivån max fungerar som ett alias för högsta möjliga nivå. Med tiden kan PHPStan lägga till ytterligare numeriska nivåer, så att använda max säkerställer att du alltid får de striktaste kontrollerna.

Som standard kör PHPStan nivå 0. Detta inkluderar bara de mest grundläggande testerna. Det är en bra idé att få din kodbas att passera varje nivå individuellt innan du går vidare till nästa. Äldre projekt kommer sannolikt att stöta på en annan uppsättning problem med varje ny nivå.

Annonsering

För att ändra nivån som PHPStan använder kan du skicka parametern –level kommandorad:

vendor/bin/phpstan analysera src-nivå 8

Förutom den inbyggda kontroller, PHPStan -tillägg är tillgängliga för att lägga till ännu mer funktionalitet. Du kan också skriva dina egna regler från grunden. Detta är användbart när du avvecklar funktionalitet som utvecklare inte längre ska använda i någon ny kod. Vi kommer att ta upp anpassade regler i en framtida artikel.

Konfigurera PHPStan

Utöver det första experimentet kan det snabbt bli tröttsamt att använda PHPStans kommandoradsgränssnitt. Det är bäst att lägga till en konfigurationsfil i ditt projekt som sedan kan användas för källkontroll för alla dina utvecklare att använda.

PHPStan använder Neon -konfigurationsfilformatet, som har en syntax som liknar YAML. Skapa en phpstan.neon -fil i projektets rotkatalog. Den här filen laddas automatiskt när PHPStan startar, så du kan nu köra analyskommandot utan ytterligare argument:

vendor/bin/phpstan analys

För att åsidosätta konfigurationsfilen som används, skicka –configuration flagga :

vendor/bin/phpstan analyse –configuration /phpstan-config.neon

Du måste nu fylla i din phpstan.neon-fil med lite innehåll. En bra utgångspunkt kan se ut så här:

parametrar: nivå: 0 sökvägar: – src Annonsering

Denna grundläggande konfigurationsfil ska ge samma utmatning som kommandoradsinvokationen som visades tidigare. Du kan lägga till ytterligare kataloger för att skanna som nya rader i sökvägsavsnittet. Om du vill utesluta filer och kataloger lägger du till dem i ett excludes_analyse-blad inom samma parametrar.

Ignorering av fel

Ibland kan PHPStan uppstå ett problem som är oundviklig. Om det finns ett problem som du inte omedelbart kan åtgärda kan du uttryckligen ignorera det för att testerna ska klara.

Detta är särskilt viktigt när du vill gå upp till en annan nivå av kontroller, eller om du använder PHPStan i en CI -miljö där en misslyckad körning kommer att stoppa din byggdistribution. Trots det, ta inte lätt på den här handlingen – du bör bara välja att ignorera ett rapporterat fel om du är säker på att det är säkert att göra det.

När du väl har fattat beslutet lägger du till en ny ignoreErrors -sektion inom parametrarna i din konfigurationsfil. Du måste definiera meddelandet som ska matchas som en regex och sökvägarna för att tillämpa uteslutningen på:

parametrar: nivå: 0 sökvägar: – src ignoreErrors: – meddelande: '/Return type string of method ExampleClass :: exempel () är inte kovariant (.*). ' sökväg: src/ExempelKlass.php

Du kan välja att ange sökvägar som en uppsättning sökvägar och ersätta nyckeln för enstaka väg som visas ovan.

Valfria regler

< p>PHPStans strikthet kan justeras med en serie konfigurationsvariabler. Dessa låter dig finjustera de kontroller som görs, utanför nivåerna som beskrivs ovan. Några av dessa är potentiellt kontroversiella eller osannolika att de överensstämmer med alla privata stilguider, varför de är avstängda som standard.

Några inställningar som kan vara värda att aktivera inkluderar:

Annonsering

Komplett information om dessa valfria inställningar – och många fler – finns inom PHPStans konfigurationsreferens.

Slutsats

Det är slutet på vår introduktion till PHPStan. Det hjälper dig att ha förtroende för din kodbas och belyser eventuella problem innan de blir ett problem i produktionen.

PHPStan är så snabb att installera att det verkligen inte finns någon anledning att inte använda den, särskilt när du arbetar med en modern starkt kodad kodbas. Låt dig inte luras att tro att den kan ersätta manuell testning. PHPStan kan skryta med ett stort sortiment av kontroller men det kan inte identifiera logiska problem och förstår inte ditt projekts affärsregler. Det är bara en annan tillgång i verktygslådan när du bedömer en kodbas hälsa och fungerar tillsammans med betrodda följeslagare som enhetstester och funktionalitetstest från början till slut.

Exit mobile version