PHP Insights v2.0

Marcus Olsson,

Jag är relativt ny till analysverktyg i mitt dagliga arbete – men i de senaste paketen jag har släppt open source (t.ex. Ampersand) så har jag använt mig av bl.a. Codesniffer för att få till en bra standard.

Men jag har även på sistomne testkört PHP Insights av Nuno Maduro för att städa upp, förbättra och hitta fel i koden för esignering.se. I.o.m. v2.0 som släpptes för ett par dagar sedan så är det ännu enklare att konfigurera upp och tolka analyserna och för att sedan åtgärda eventuella fel eler brister.

PHP Insights v2.0

v2.0

Det finns tre stora nyheter i PHP Insights v2.0:

Snabbare analyser

Från att ha varit en ganska krävande och långsam process så granskar PHP Insights numera koden blixtsnabbt, detta tack vare ett nytt cache-system och bättre användning av flera processorkärnor.

Realtidsanalyser

Med ./vendor/bin/phpinsights --summary kan man numera i realtid granska koden – så snart du gör en änding så analyseras koden på nytt.

Auto-fixer

Den kanske största nyheten är --fix; eftersom PHP Insights använder sig av PHPCS (i.e. "Codesniffer") i grunden, kan man nu använda verktygets inbyggda möjligheter för att åtgärda fel automatiskt med fix-flaggan

Konfiguration

Första gången man använder ett verktyg så som Codesniffer eller PHP Insights så får man lätt fel som man kanske egentligen inte anser är något "riktigt" fel för ens projekt, t.ex.

1app/Jobs/DeleteContract.php:42: Your function is too long.
2Currently using 37 lines. Can be up to 20 lines.
1app/Jobs/DeleteContract.php:42: Your function is too long.
2Currently using 37 lines. Can be up to 20 lines.

Men man kan konfigurera i princip allt med PHP Insights, så om jag vill ändra ovanstående till att tillåta 40 rader;

1'config' => [
2 \SlevomatCodingStandard\Sniffs\Functions\FunctionLengthSniff::class => [
3 'maxLinesLength' => 40,
4 ]
5]
1'config' => [
2 \SlevomatCodingStandard\Sniffs\Functions\FunctionLengthSniff::class => [
3 'maxLinesLength' => 40,
4 ]
5]

Eller om jag i mitt projekt vill tillåta oändligt antal rader;

1'remove' => [
2 \SlevomatCodingStandard\Sniffs\Functions\FunctionLengthSniff::class
3]
1'remove' => [
2 \SlevomatCodingStandard\Sniffs\Functions\FunctionLengthSniff::class
3]

Jag ser många fördelar med analysverktyg, särskilt om man i ett projekt vill behålla en gemensam kodningsstandard – men man får också förvänta sig viss konfiguration för att få det att passa ens egna flöde. Att bara köra det rakt av ger en ganska mycket stress över hundratals "fel" som kan åtgärdas.

Spana in phpinsights.com för mer info och dokumentation.