A statikus elemzés futtatása a kódon időt takarít meg a rejtett problémák feltárásával. A PHPStan egy statikus elemző eszköz a PHP számára, amely segít a kódbázis minőségének javításában. Így futtathatja a PHPStant a GitLab CI csővezetékein belül.
Jó, ha a PHPStan rendszeresen fut, miközben új funkciókat épít ki. Bár helyileg használja, mégis csak idáig vezet. Bízol abban, hogy a többi csapattag ugyanolyan fegyelmezett, mint te. A statikus elemzés integrálása a CI / CD munkafolyamatába biztosítja, hogy a kódot nem lehet egyesíteni, ha az megszakítaná a projekt fő ágát.
A telepítés kezdete a PHPStan segítségével
Először hozzá kell adnia a PHPStant a projektjéhez. Már van egy részletes útmutatónk a PHPStan telepítése és konfigurálása, ezért itt csak az alapokat tárgyaljuk.
Először használja a Composert a PHPStan telepítéséhez:
composer require --dev phpstan/phpstan
Ezután hozzon létre egy alapot phpstan.neon
konfigurációs fájl a projektben:
parameters: level: max paths: - src - tests tmpDir: .tmp
Az ideiglenes könyvtárat felülbírálják, hogy segítsék a GitLab CI gyorsítótárazását, az alábbi beállítás.
Mostantól futtathatja a PHPStant helyileg, hogy ellenőrizze a konfiguráció működését:
vendor/bin/phpstan analyse
Ebben a szakaszban nem mindegy, hogy a tesztek sikeresek-e.
A GitLab beállítása a CI számára
Győződjön meg arról, hogy a kódot egy projektbe tolta a GitLab szerveren. Ellenőriznie kell, hogy a Pipelines funkció be van-e kapcsolva a projektjéhez – ha a bal oldalsávon megjelenik a „CI / CD”, akkor mehet.
A projekt CI rendszerének engedélyezéséhez kattintson az oldalsáv „Beállítások” gombjára. Bontsa ki a „Láthatóság, projektfunkciók, engedélyek” szakaszt, és engedélyezze a „Csővezetékek” funkciót.
Ha fegyelmezetten használja a GitLab egyesítési kéréseit (MR), mostantól konfigurálhatja a GitLab-ot, hogy megakadályozza az MR-ek egyesülését, hacsak nincs sikeres folyamatuk. Bontsa ki a „Kérések egyesítése” beállításokat, és ellenőrizze a „A csővezetékeknek sikeresnek kell lennie” kapcsolót. Kattintson a „Mentés” gombra a megerősítéshez. Ez megakadályozza, hogy véletlenül egyesítsen egy MR-t, ha a PHPStan nem sikerül a változásokkal szemben.
A GitLab CI használatához meg kell adnia egy GitLab Runnert példány, csoport vagy projekt szinten. A futók felelősek a GitLab rendszer által létrehozott CI-feladatok végrehajtásáért.
A PHPStan Docker képet fogjuk használni a PHPStan futtatásához a CI csővezetékünkben. Ehhez GitLab Runner használatára van szükség a Docker végrehajtó segítségével. Ha önállóan kezelt példányt használ, és új Runnert kell konfigurálnia, kövesse a következő útmutatást: cikkünk a GitLab CI felállításáról.
GitLab CI csővezeték létrehozása
A GitLab CI konfigurálása az a használatával történik .gitlab-ci.yml
fájl a projekt gyökerénél. A CI csővezetékek több egymást követő lépést támogatnak. Minden szakasz munkája párhuzamosan fut. A PHPStan futtatásához egyetlen szakaszra van szükségünk, amely egy munkát futtat.
stages: - phpstan cache: key: $CI_COMMIT_REF_SLUG paths: - .tmp/ - vendor/ phpstan: stage: phpstan image: ghcr.io/phpstan/phpstan script: - analyse --no-progress --error-format gitlab > phpstan.json artifacts: when: always reports: codequality: phpstan.json
Ez a GitLab CI fájl tartalmaz mindent, ami a PHPStan futtatásához szükséges. Meghatározunk egy színpadot, phpstan
, amely egy szintén hívott munkát tartalmaz phpstan
. A feladat a hivatalos PHPStan Docker képet használja a GitHub tároló-nyilvántartásból.
A GitLab CI gyorsítótár a .tmp
és vendor
könyvtárakat. Ez javítani fogja az ugyanazon ágon végzett további futtatások teljesítményét. A gyorsítótár automatikusan helyreáll. Vissza a miénkbe phpstan.neon
, beállítottuk a tmpDir
nak nek .tmp
emiatt – ez azt jelenti, hogy most magabiztosan hivatkozhatunk rá a CI csővezeték gyorsítótár-konfigurációjában.
Gyorsítótárazunk is vendor
hogy elkerüljék a zeneszerzői függőségek szükségtelen újratelepítését az egyes futtatásokhoz. Ne feledje, hogy nem kell futtatnia composer install
manuálisan – a hivatalos PHPStan Docker kép automatikusan meghívja.
Az --error-format
a zászlót átadják a PHPStan’s-nak analyse
parancs. Ez úgy konfigurálja a PHPStant, hogy JSON fájlt hozzon létre a GitLab kódminőségi jelentésében elfogadott formátumban. Lent a artifacts
szakaszban ez a fájl a munka befejezése után feltöltésre kerül a GitLab-ba.
A csővezeték használata
Kötelezze el .gitlab-ci.yml
és nyomja meg a GitLab kiszolgálót. A CI-rendszernek most be kell indulnia, és létre kell hoznia az első csővezetéket. A folyamat előrehaladásának megtekintéséhez használja a bal oldali navigációs panel „CI / CD” linkjét.
Ha zöld pipát kap, a PHPStan tesztjei sikeresek voltak! Fióktelete jó állapotban van, és kész az egyesülésre. Ha megjelenik egy piros kereszt, akkor még több munkát kell elvégeznie. A PHPStan és a GitLab CI éppen megállította a potenciálisan meghibásodott kód egyesítését.
A hibák listáját a folyamat jobb oldalán található letöltés ikonra kattintva szerezheti be. Válassza ki a PHPStan kódminőségi tárgyat, hogy megszerezze a PHStan által talált hibák JSON jelentését.
Használat egyesítési kérelmekkel
A JSON kézi elolvasása nem jelent nagyszerű élményt. A GitLab egyesítési kérelmei azonban automatikusan felfedik a jelentés tartalmát. Mivel a jelentés GitLab-kódminőségű műtárgyként van megcímkézve, a GitLab tudja, hogyan kell az információkat benne bemutatni.
A meghibásodott csővezetékkel történő egyesítéskor egy kibontható „Kódminőség” részt kell megjeleníteni. Ez jelzi a felmerült hibák számát. A szakasz kibontásával megtekintheti a PHPStan által talált problémák teljes listáját.
Miután megoldotta a problémákat, tolja a változtatásokat a GitLab-ra. A vezeték ismét futni fog. Miután elkészült, az új állapot megjelenik a Csővezetékek képernyőn és az egyesítési kérelem kódminőségi moduljában.
Következtetés
A PHPStan segít jobb PHP-t írni, amely kevésbé érzékeny a rejtett problémákra. Ahhoz, hogy a legtöbbet hozza ki belőle, az eszközt úgy kell beépíteni a fejlesztési munkafolyamatba, hogy ne lehessen figyelmen kívül hagyni vagy megkerülni.
A PHPStan és a GitLab CI együttes használata azt a következetességet nyújtja, amiben biztosnak kell lennie a kódban. Ha a GitLab-ot úgy konfigurálja, hogy blokkolja az MR-eket egy meghibásodott csővezetékkel, az azt jelenti, hogy a változtatások nem léphetnek be a fő ágba PHPStan-futtatás nélkül. A PHPStan teljes körű támogatása a GitLab kódminőségi jelentéseihez megkönnyíti a hibák felmérését anélkül, hogy elhagyná a webes felhasználói felületet, és segít gyorsan megoldani a feltárt problémákat.