PHP CodeSniffer gebruiken met WordPress PHP CodeSniffer installeren en gebruiken

In het eerste artikel van deze serie hebben we code geuren gedefinieerd en gekeken naar enkele voorbeelden van wat ze zijn en hoe we ze kunnen refactiveren, zodat de kwaliteit van de code wordt verbeterd. Terugroepen:

[A] code geur, ook bekend als een slechte geur, in computerprogrammeringscode, verwijst naar elk symptoom in de broncode van een programma dat mogelijk een dieper probleem aangeeft. 

Uiteindelijk werken we aan de implementatie van WordPress-specifieke regels voor het snuiven van codes, maar voordat we dat doen is het belangrijk om vertrouwd te raken met PHP CodeSniffer. 

In dit artikel gaan we kijken wat PHP CodeSniffer is, hoe het te installeren, hoe het tegen een voorbeeldscript moet worden uitgevoerd en hoe het script kan worden aangepast. Daarna bekijken we hoe we verder gaan met WordPress-specifieke code.

Als je een lokale ontwikkelomgeving hebt opgezet, dan is dat geweldig; zo niet, dat is prima. Ik zal wat links aanbieden waarmee je snel aan de slag kunt. 

Met dat gezegd, laten we aan de slag gaan.

voorwaarden

Voordat u aan de slag gaat, is het belangrijk dat u een bepaald type lokale ontwikkelomgeving hebt, ook al bevat dit alleen een exemplaar van de PHP-interpreter.

Je mag al een kopie hebben

Merk op dat als je een variant van Linux of OS X gebruikt, je PHP mogelijk al hebt geïnstalleerd. Als u dat doet, hoeft u zich in dit gedeelte geen zorgen te maken over iets anders. Om te bepalen of je PHP hebt geïnstalleerd, voer je de volgende opdracht uit op de opdrachtregel:

$ php -v

Je zou zoiets als het volgende moeten zien (hoewel je uitvoer mogelijk anders is, gebaseerd op de versie van PHP die je hebt gekozen om uit te voeren):

PHP 5.6.10 (cli) (gebouwd: 6 juli 2015 14:28:54) Copyright (c) 1997-2015 De PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

Als u meer geavanceerd bent en meerdere exemplaren van het project hebt geïnstalleerd, kunt u het volgende uitvoeren:

$ welke php

En je zou zoiets als dit moeten zien:

/Applications/MAMP/bin/php/php5.6.10/bin/php

Hoewel uw uitvoer zal variëren op basis van waar uw exemplaar van PHP is geïnstalleerd.

Maar als je dat niet doet, is dat goed!

Hoewel deze serie voornamelijk op beginners is gericht, kunnen sommigen onder jullie comfortabel zijn met het downloaden van een exemplaar van PHP en het op jouw systeem installeren. Als jij dit bent, pak dan een exemplaar van PHP van de homepage van het project, installeer het en ga terug naar deze tutorial.

Als, aan de andere kant, dit nieuw voor u is, kunt u ervoor kiezen om een ​​van de installatieprogramma's voor uw besturingssysteem te gebruiken op de PHP-homepage die hierboven is gelinkt of op een van de onderstaande hulpprogramma's..

  • WAMP voor Windows
  • XAMPP voor Linux, Windows of OS X.
  • MAMP voor Windows en OS X

Al deze pakketten hebben hun eigen installatieprogramma's en zullen PHP, MySQL en Apache installeren. Zoals eerder vermeld, zijn we in de eerste plaats bezig met het beschikbaar hebben van een exemplaar van PHP op ons systeem. 

Zodra deze zijn geïnstalleerd, probeer dan de opdrachten te gebruiken die worden vermeld in het eerste deel van dit gedeelte (of het equivalent van uw systeem) en u zou vergelijkbare resultaten moeten zien. 

Als u dit niet doet, moet u waarschijnlijk het pad naar PHP toevoegen aan uw omgevingsvariabelen. Dit valt buiten het bestek van deze zelfstudie, dus raadpleeg de documentatie voor de versie van het project dat u hebt geïnstalleerd.

Nu PHP is geïnstalleerd, zijn we klaar om aan de slag te gaan met het vangen en opschonen van onze codegeur.

Wat is PHP CodeSniffer?

Je kunt de officiële PHP CodeSniffer-software vinden op GitHub.

Uit de documentatie van het project:

PHP_CodeSniffer is een set van twee PHP-scripts; de belangrijkste phpcs script dat codeert voor PHP-, JavaScript- en CSS-bestanden om schendingen van een gedefinieerde coderingsnorm en een seconde te detecteren phpcbf script om standaard schendingen standaardschendingen te corrigeren. PHP_CodeSniffer is een essentiële ontwikkelingstool die ervoor zorgt dat uw code schoon en consistent blijft.

Als je nog nooit zoiets hebt gezien, klinkt het heel netjes, toch? Ik bedoel, het is een tool die bedoeld is om ervoor te zorgen dat er een bepaald kwaliteitsniveau in je code zit!

Hoewel in het project talen als CSS en JavaScript worden genoemd, concentreren we ons in deze reeks op PHP. Dit betekent echter niet dat het niet belangrijk is om de kwaliteit van die specifieke taalbestanden in uw projecten te controleren.

Hoe goed het ook klinkt, het roept nog steeds de vragen op: hoe installeren we de software en hoe beginnen we onze code te controleren?

Laten we nu beide vragen beantwoorden.

1. De software installeren

Als u een Google-zoekopdracht zou uitvoeren voor het installeren van PHP CodeSniffer, zult u waarschijnlijk een verscheidenheid aan resultaten krijgen, waarvan er veel gebruik zullen maken van iets dat Pear heet.

Pear was ooit het de-facto pakketdistributiesysteem voor PHP-bibliotheken, en hoewel veel pakketten nog steeds beschikbaar zijn via de software, wordt het ook met pensioen gestuurd van andere populaire pakketten (zoals PHPUnit).

Om deze reden raad ik vaak aan andere installatiemethoden te gebruiken wanneer deze beschikbaar zijn. Dit omvat het gebruik van hulpmiddelen zoals Composer, die misschien wel de populairste afhankelijkheidsbeheersoftware voor PHP is.

Als u nog nooit Composer hebt gebruikt, hoeft u zich geen zorgen te maken. Ik zal alle stappen leveren die je nodig hebt om PHP CodeSniffer op je machine te krijgen met Composer en met minimaal werk. Als u meer wilt weten, hebben we een aantal tutorials over het gebruik van Composer, dus neem gerust contact met hen op.

Composer installeren

Voordat we PHP CodeSniffer installeren, moeten we Composer daadwerkelijk installeren. Gelukkig is het heel eenvoudig om dit te doen als je PHP op je lokale computer hebt geïnstalleerd.

Om Composer te installeren, kunt u dit bestand downloaden en vervolgens de volgende opdracht uitvoeren op de opdrachtregel van waar u ook het Composer-installatieprogramma hebt gedownload:

$ php composer-setup.php --install-dir = bin --filename = composer

Een opmerking van de installatie-instructies van de Composer:

U kunt Composer in een specifieke map installeren met behulp van de --install-dir optie en bovendien (her) benoemen met de --bestandsnaam keuze. 

Ga voor meer informatie naar de downloadinstructies of bekijk het hele project op GitHub.

Als het eenmaal is geïnstalleerd, kunt u Composer nu gebruiken om afhankelijkheden van derden, zoals PHP CodeSniffer, in uw projecten te installeren. Noteer echter waar u uw exemplaar van Composer hebt geïnstalleerd. U moet ernaar verwijzen als u het gebruikt, omdat we het vanaf de opdrachtregel uitvoeren.

Hoe dan ook, laten we doorgaan en een map maken waaruit we onze PHP-scripts gaan uitvoeren. Hoewel we nog niets in deze directory zullen hebben, moeten we een bestand aanmaken met de naam composer.json.

Ik ga mijn telefoonboek bellen tutsplus-demo, en ik zal mijn Composer-bestand opnemen in die map om aan de slag te gaan.

Nadat u het bestand hebt gemaakt, plaatst u de volgende code in het JSON-bestand:

"require": "squizlabs / php_codesniffer": "2. *"

Kort gezegd vertelt dit Composer om PHP CodeSniffer te installeren wanneer u de juiste opdracht uitvoert. Merk op dat de vereisen richtlijn doet het volgende:

Geeft de pakketten weer die vereist zijn voor dit pakket. Het pakket wordt niet geïnstalleerd tenzij aan deze vereisten kan worden voldaan.

U kunt meer lezen over het schema van de Composer in de documentatie.

Zodra Composer is geïnstalleerd en eenmaal uw composer.json bestand lijkt op de bovenstaande code, is het tijd om PHP CodeSniffer daadwerkelijk te installeren. Voer de volgende opdracht uit vanaf de opdrachtregel:

$ composer update

Merk op dat dit is gebaseerd op het idee dat Composer openbaar beschikbaar is op uw systeem. Als dat niet het geval is, kunt u het uitvoeren door het volledige pad naar het geïnstalleerde bestand te typen of u kunt het toevoegen aan uw omgevingsvariabelen en vervolgens uw terminalsessie opnieuw starten om de variabelen opnieuw te laden.

Zodra Composer klaar is, ziet u ongeveer zoiets als dit:

En jouw tutsplus-code directory zou er nu als volgt uit moeten zien:

Merk met name op dat u een leveranciermap hebt. Dit betekent dat Composer correct PHP CodeSniffer heeft geïnstalleerd. Op dit moment zijn we klaar om onze PHP-code te evalueren.

2. Evalueren van scripts

Laten we eerst een voorbeeldscript nemen. Degene waar we naar zullen kijken, is te vinden in dit antwoord op Stack Overflow.

Maak een bestand in uw tutsplus-demo map en noem deze sample.php. Zorg er vervolgens voor dat het bestand de volgende inhoud bevat:

 

Sla je werk op. Vervolgens kunnen we PHP CodeSniffer uitvoeren vanaf de opdrachtregel en laten we de code in het bovenstaande script evalueren met behulp van de standaard regelset.

Voer vanaf uw terminal de volgende opdracht in:

$ vendor / bin / phpcs sample.php

Dit zou uitvoer moeten genereren die het volgende bevat:

Skyhopper5: tutsplus-demo tommcfarlin $ vendor / bin / phpcs sample.php BESTAND: /Users/tommcfarlin/Desktop/tutsplus-demo/sample.php ------------------- -------------------------------------------------- - GEVONDEN 4 FOUTEN DIE 4 LIJNEN BEÏNVLOEDEN ------------------------------------------- --------------------------- 2 | FOUT | [] Ontbrekend bestand doc-commentaar 5 | FOUT | [x] Geen spatie gevonden na komma in functieaanroep 7 | FOUT | [] Verwacht "if (...) \ n"; gevonden "if (...) \ n" 9 | FOUT | [] Verwacht "if (...) \ n"; gevonden "if (...) \ n" ---------------------------------------- ------------------------------ PHPCBF KUNT DE 1 MARKTE SNIFF-OVERTREDINGEN AUTOMATISCH VASTSTELLEN ----------- -------------------------------------------------- --------- Tijd: 46ms; Geheugen: 3,5 MB Skyhopper5: tutsplus-demo tommcfarlin $ 

Merk op dat het vier fouten heeft gevonden. De eerste kolom vertelt je op welke regel de fout is, de tweede kolom geeft aan dat het een fout is (versus een waarschuwing), en de rest vertelt je wat het verwachtte te zien in vergelijking met wat het daadwerkelijk zag.

Dus laten we het bestand opruimen op basis van die fouten. Over het algemeen moeten we het volgende doen:

  1. Voeg een documentatie commentaar op bestandsniveau toe.
  2. Voeg een spatie toe na een komma in een aanroep naar een functie in het lijnbestand.
  3. Voeg spaties toe na als verklaringen in het script.

Het eindresultaat zou er ongeveer zo uitzien:

 * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @link http://is.gd/dq0DhO * @since 1.0.0 * / $ target_dir = "uploads /"; $ target_file = $ target_dir. basename ($ _ FILES [ "fileToUpload"] [ "naam"]); $ uploadOk = 1; $ imageFileType = padinfo ($ target_file, PATHINFO_EXTENSION); // Controleer of het afbeeldingsbestand een echte afbeelding of nepafbeelding is als (isset ($ _ POST ["submit"])) $ check = getimagesize ($ _ FILES ["fileToUpload"] ["tmp_name"]); if ($ check! == false) echo "Bestand is een afbeelding -". $ check ["mime"]. ""; $ uploadOk = 1;  else echo "Bestand is geen afbeelding."; $ uploadOk = 0; ?> 

Voer vervolgens het script opnieuw uit en u zou geen uitvoer moeten krijgen. Dat wil zeggen, u zou de standaard commandoregel moeten krijgen. Soms betekent dit dat er iets kapot is, maar in dit geval betekent dit dat alles loopt zoals verwacht

Niet slecht, toch?? 

Stel je nu eens voor wat dit zou kunnen doen voor grotere codebases en scripts waarmee je dagelijks werkt.

Het is geen kruk

Hoe belangrijk het ook is om onze code te evalueren, om geurtjes te vermijden en om te streven naar de hoogst mogelijke kwaliteit, hulpmiddelen als PHP CodeSniffer zijn niet bedoeld als krukken. Dat betekent dat we geen excuus hebben om slechte code te schrijven, omdat een andere tool die code wel zal pakken.

Omdat het dat niet altijd zal doen.

In plaats daarvan is dit bedoeld als een soort tweede passage. Dat wil zeggen, het is bedoeld om dingen te vangen die we misschien missen als we de eerste, tweede of negende keer code schrijven. Het leuke van dit specifieke programma is dat je verschillende regels in PHP CodeSniffer kunt laden, afhankelijk van de omgeving, het framework of de bibliotheek waarmee je werkt.

En dat is precies wat we gaan doen met WordPress in het volgende artikel.

Conclusie

Wat het introductiemateriaal betreft, hebben we in deze tutorial nogal wat aandacht besteed. Dat wil zeggen, we hebben gekeken naar het opzetten van een basis ontwikkelomgeving op onze lokale machine die PHP omvat.

Vervolgens hebben we Composer bekeken en hoe deze op ons systeem kan worden geïnstalleerd. We hebben ons eerste Composer-bestand geschreven voor het ophalen van afhankelijkheden, namelijk PHP CodeSniffer, en we hebben zelfs de door de software verstrekte resultaten geëvalueerd en gecorrigeerd.

Als je in de eerste plaats een PHP-ontwikkelaar bent, dan hoop ik dat de eerste twee artikelen in de serie nuttig zijn geweest, maar als je een WordPress-ontwikkelaar bent, hebben we een beetje meer te bieden.

In het laatste artikel in de serie gaan we onze aandacht richten op WordPress. Omdat het een eigen set coderingsstandaarden heeft, gaan we kijken hoe deze regels in PHP CodeSniffer kunnen worden geladen en vervolgens kunnen plug-ins, themacodes enzovoort worden geëvalueerd om een ​​idee te krijgen hoe dit in onze dagen moet worden gebruikt. het huidige werk in onze WordPress-projecten.

Voordat we verdergaan naar het volgende artikel, bekijk de bovenstaande code en zorg dat PHP en PHP CodeSniffer zijn geïnstalleerd en dat je bekend bent met hoe het werkt, omdat we dit allemaal samen zullen binden.

Ten slotte kun je al mijn cursussen en tutorials bekijken op mijn profielpagina, en je kunt me volgen op mijn blog en / of Twitter op @tommcfarlin, waar ik het heb over verschillende softwareontwikkelingspraktijken, vooral in de context van WordPress.

Aarzel niet om vragen of opmerkingen achter te laten in de feed hieronder, en ik zal ernaar streven om op elk van hen te reageren.

Referenties

  • PHP
  • PHP CodeSniffer op GitHub
  • Componist op GitHub
  • Composer installeren
  • The Composer Schema
  • Tutorials voor Tuts + Composer
  • Voorbeeld PHP Script van Stack Overflow