dbwebb-se / mvc

Course repo for the mvc and object orientation in frameworks course - mvc.
Other
1 stars 4 forks source link

Hur flytta sin utvecklingsmiljö och Makefile till Symfony/Laravel? #22

Open mosbth opened 3 years ago

mosbth commented 3 years ago

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.

$ composer require phpunit/phpunit --dev
$ composer require phpstan/phpstan --dev

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.

Kommandot körs alltid i konstruktionen ovan.

Det skapas en loggfil i build/phpcpd.

PHPCS

Validering av kodstandard.

$ make phpcs
[ -d build ] || mkdir build
rm -rf build/*
[ ! -f .phpcs.xml ] || .bin/phpcs --standard=.phpcs.xml | tee build/phpcs 

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.

$ make phpmd
[ -d build ] || mkdir build
rm -rf build/*
[ ! -f .phpmd.xml ] || .bin/phpmd . text .phpmd.xml | tee build/phpmd 

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.

$ make phpstan
[ -d build ] || mkdir build
rm -rf build/*
[ ! -f .phpstan.neon ] || vendor/bin/phpstan analyse -c .phpstan.neon | tee build/phpstan  

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.

$ make phpunit
[ -d build ] || mkdir build
rm -rf build/*
[ ! -f .phpunit.xml ] || XDEBUG_MODE=coverage vendor/bin/phpunit --configuration .phpunit.xml  | tee build/phpunit 

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.