I de första tre kmomen använder vi en utvecklingsmiljö som utgår make och Makefile. I grunden handlar det om möjligheten att installera en lokal utvecklingsmiljö med validatorer och testverktyg och köra dem sitt projekt. Här beskriver jag de delar och filer som själva utvecklingsmiljön består av, för att göra det enklare att förstå vilka delar som man skall kopiera över.
I den nya katalogen example/devtools har jag lagt alla de filer som är relaterade till utvecklingsmiljön och här följer en kort förklaring till respektive fil.
Innan du kopierar över filerna bör du kontroller att de inte skriver över någon befintlig fil i ditt projekt.
Beroende av strukturen på ditt utvecklingsprojekt så behöver du troligen se över samtliga konfigurationsfiler så att de matchar din miljö.
Makefile
Filen Makefile.devtools.mf samlar de kommandon som rör utvecklingsmiljön. Det går bra att döpa om filen till Makefile om det inte krockar med någon annan fil i ditt projekt.
# Kör target från filen Makefile
make <target>
# Kör targets från vald makefile med annat namn
make -f <file> <target>
make -f Makefile.devtools.mf <target>
I exemplen nedan förutsätter jag att du har bytt namn till Makefile för att göra exemplen mer rena.
make install-php-tools
Installera validatorer som körs i sina egna binärer, främst som phar-filer. Alla binärer sparas i den nyskapade katalogen .bin/.
$ make install-php-tools
install -d .bin
...
$ ls -l .bin
total 5.4M
-rwxr-xr-x 1 mos mos 1.3M Apr 27 16:13 phpcbf*
-rwxr-xr-x 1 mos mos 70K Apr 27 16:13 phpcpd*
-rwxr-xr-x 1 mos mos 1.3M Apr 27 16:13 phpcs*
-rwxr-xr-x 1 mos mos 95K Apr 27 16:13 phploc*
-rwxr-xr-x 1 mos mos 2.7M Apr 27 16:13 phpmd*
Dessa verktyg kan du provköra direkt vi tex .bin/phpcs --version.
Composer require
Installera de validatorer som installeras med composer. Deras binärer sparas i vendor/bin.
Fördelen med composer är att an får bättre kontroll på vilka versioner som installeras och det stäms av mot de versioner som finns lokalt.
Nackdelen med composer är att man får med alla moduler som verktyget är beroende av och det kan ge begränsningar till de moduler du använder i din applikation.
make check-version
Provkör de installerade verktygen och skriv ut vilken version de har.
PHPCPD
En "copy-paste detector" som upptäcker när man har kopierat kodstycken som eventuellt lämpar sig bättre i en funktion eller metod.
$ make phpcpd
[ -d build ] || mkdir build
rm -rf build/*
.bin/phpcpd src | tee build/phpcpd
Kommandot har ingen konfigurationsfil utan kollar de filerna som finns i katalogen som specificeras i makefilen. I exemplet ovan används katalogen src/ och man får redigera makefilen om man har sin källkod i en annan katalog.
Kommandot har options som man kan använda för att exkludera vissa sökvägar från att köras. Använd phpcpd --help för att se vilka options som finns.
I de första tre kmomen använder vi en utvecklingsmiljö som utgår make och Makefile. I grunden handlar det om möjligheten att installera en lokal utvecklingsmiljö med validatorer och testverktyg och köra dem sitt projekt. Här beskriver jag de delar och filer som själva utvecklingsmiljön består av, för att göra det enklare att förstå vilka delar som man skall kopiera över.
I den nya katalogen
example/devtools
har jag lagt alla de filer som är relaterade till utvecklingsmiljön och här följer en kort förklaring till respektive fil.Innan du kopierar över filerna bör du kontroller att de inte skriver över någon befintlig fil i ditt projekt.
Beroende av strukturen på ditt utvecklingsprojekt så behöver du troligen se över samtliga konfigurationsfiler så att de matchar din miljö.
Makefile
Filen
Makefile.devtools.mf
samlar de kommandon som rör utvecklingsmiljön. Det går bra att döpa om filen tillMakefile
om det inte krockar med någon annan fil i ditt projekt.I exemplen nedan förutsätter jag att du har bytt namn till
Makefile
för att göra exemplen mer rena.make install-php-tools
Installera validatorer som körs i sina egna binärer, främst som phar-filer. Alla binärer sparas i den nyskapade katalogen
.bin/
.Dessa verktyg kan du provköra direkt vi tex
.bin/phpcs --version
.Composer require
Installera de validatorer som installeras med composer. Deras binärer sparas i
vendor/bin
.Fördelen med composer är att an får bättre kontroll på vilka versioner som installeras och det stäms av mot de versioner som finns lokalt.
Nackdelen med composer är att man får med alla moduler som verktyget är beroende av och det kan ge begränsningar till de moduler du använder i din applikation.
make check-version
Provkör de installerade verktygen och skriv ut vilken version de har.
PHPCPD
En "copy-paste detector" som upptäcker när man har kopierat kodstycken som eventuellt lämpar sig bättre i en funktion eller metod.
Kommandot har ingen konfigurationsfil utan kollar de filerna som finns i katalogen som specificeras i makefilen. I exemplet ovan används katalogen
src/
och man får redigera makefilen om man har sin källkod i en annan katalog.Kommandot har options som man kan använda för att exkludera vissa sökvägar från att köras. Använd
phpcpd --help
för att se vilka options som finns.Kommandot körs alltid i konstruktionen ovan.
Det skapas en loggfil i
build/phpcpd
.PHPCS
Validering av kodstandard.
Kommandot använder sig av konfigurationsfilen
.phpcs.xml
som också bestämmer vilka kataloger som skall köras och vilka som skall exkluderas.Kommandot körs om konfigurationsfilen finns.
Det skapas en loggfil i
build/phpcs
.PHPMD
Validering av kod.
Kommandot använder sig av konfigurationsfilen
.phpmd.xml
som också bestämmer vilka kataloger som skall exkluderas.Kommandot körs om konfigurationsfilen finns.
Det skapas en loggfil i
build/phpmd
.PHPSTAN
Validering av kod.
Kommandot använder sig av konfigurationsfilerna
.phpstan.neon
och.phpstan.constants.php
som bestämmer vilka regler som gäller vid kodvalideringen.Kommandot körs om konfigurationsfilen finns.
Det skapas en loggfil i
build/phpstan
.PHPUNIT
Enhetstestning.
Kommandot använder sig av konfigurationsfilen
.phpunit.xml
som bestämmer vilka regler som gäller vid körningen.Kommandot körs om konfigurationsfilen finns.
Det skapas en loggfil i
build/phpunit
.