phpstan integreren in Bitbucket Pipeline

09.12.2019
door Meike Müller
Tipps & Tricks
Banner
Met dit korte artikel willen we je handige tips geven op het gebied van webontwikkeling. Als je nog vragen hebt of meer informatie wilt over maatwerk & responsive webontwikkeling, neem dan gerust contact met ons op. We zijn er om je te helpen met al je uitdagingen en nu onze tip met betrekking tot de PHP code analyser:

Een statische code analyser helpt om veel problemen op te sporen voordat ze je applicatie neerhalen.

Wij gebruiken phpstan voor onze PHP-projecten en slagen erin om het te integreren in de pijplijn zodat een push alleen wordt ingezet als de analyse succesvol is.

Om dit te laten werken, moet je eerst phpstan zelf configureren voor je PHP-applicatie. We gaan ervan uit dat je composer gebruikt, dus je kunt het gewoon toevoegen als een dev-afhankelijkheid:

composer require --dev phpstan/phpstan

Vervolgens moet je een configuratie maken om in ieder geval de vendor-bestanden uit te sluiten. Om dit te doen, maak je een phpstan.neon aan in je root directory en vul je het met bijvoorbeeld dit:

parameters:
excludes_analysis:
- *vendor/*

Je kunt nu testen of je code schoon is door het volgende commando aan te roepen vanuit je hoofddirectory (ervan uitgaande dat je vendormap zich daar ook bevindt).

vendor/bin/phpstan analyse -l 0 -c .\phpstan.neon . -geheugenlimiet=1G

Kort over de individuele parameters:

-l 0
Dit stelt het striktheidsniveau in, d.w.z. hoe strikt de regelset is na phpstan-controles. 0 is "minst strikt".
-c .phpstan.neon
Deze vlag vertelt phpstan waar de configuratie staat.
.
In welke map moet phpstan starten?
-geheugenlimiet=1G

Als je codebase groter wordt, moet je phpstan misschien meer geheugen geven, dit kun je doen met deze vlag.

Als dit allemaal werkt, kunnen we beginnen met de bitbucket-pijplijn:

Maak gewoon een bitbucket-pipelines.yml bestand aan in je hoofdmap en vul het met de volgende inhoud:

image: php:7.2-cli

pijplijnen:
branches:
dev: // Op welke branch moet de pipeline draaien?
- step: // De eerste stap is het aanroepen van phpstan
naam: Voer PHP-analyser uit   
caches: // Dit is een standaard Bitbucket cache die uw composer modules cached
- composer // U hoeft ze niet elke keer opnieuw te laden als u de pijplijn uitvoert
script:
- apt-get update -yqq
- apt-get install -y wget git zip unzip // We hebben git en unzip nodig voor de composer installaties
- docker-php-ext-install pdo_mysql // Als je MySQL gebruikt heb je waarschijnlijk ook deze php-extensie nodig,
// anders zal phpstan de MySQL constanten etc. niet vinden.
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
                                            // Composer zelf moet natuurlijk ook geïnstalleerd worden.
- cd ./application/ // Afhankelijk van het framework ... in ons geval ZF3
- composer install // Installeer de afhankelijkheden eenmalig 
- vendor/bin/phpstan analyse -l 0 -c phpstan.neon . --geheugenlimiet=1G
// Last but not least, de beslissende oproep
- stap:
... // Dit is waar uw implementatie naar de DEV / TEST / wat dan ook omgeving zou komen

Dus als phpstan iets te klagen heeft, zal het een niet-nul exitcode retourneren en zal Bitbucket de pijplijn afbreken.

De persoon die de slechte push heeft gemaakt, krijgt zelfs een e-mail en kan zijn fouten snel herstellen voordat iemand het merkt.

Je kunt het geheel testen door simpelweg syntactisch onjuiste code te pushen naar de branch waarvoor je de pijplijn hebt geconfigureerd en naar het pijplijnoverzicht in Bitbucket te gaan.

Van daaruit kun je de individuele pijplijnjobs openen en het logboek bekijken door op een individuele job te klikken.

Beispiel Pipeline

Heb je meer hulp nodig met webontwikkeling voor je bedrijf? Onze webontwikkelaars helpen u graag en beantwoorden uw vragen - neem gerust contact met ons op!

Wat is je project? Als je ons erover wilt vertellen, bellen we je terug!

 
Meike
Meike
from 09.12.2019

Hallo, mijn naam is Meike. I take care of the EXWE back office and am responsible for our social media channels. All of our articles are meant to make your life easier and help you make decisions. Nevertheless, it can happen that something remains unclear, so: Als je vragen hebt over dit artikel kun je me makkelijk bereiken op +49 231 93149827.

Je wilt altijd voorop blijven lopen met technologie Mis geen nieuws en blogberichten meer.
We hebben ook de volgende interessante berichten van onze tech blog voor je over dit onderwerp
Insurance for IT: what you need as a software developer

Insurance for IT? If you work in the IT sector, you should be properly insured. We'll show you which insurance policies are important for you!

Why your company needs a landing page

Everything you need to know for your landing page and how you can use it to target customers and direct them to your website

That is why the file name should not contain "Advertising"

It should be urgently prevented to provide image names e.g. as my_advertisement.jpg or other abbreviations in this direction.