PHP CodeSniffer gebruiken met WordPress de WordPress-regels installeren en gebruiken

Als je net meedoet met de serie, bespraken we het onderwerp codengeuren, hoe je ze kunt refactiveren en hulpmiddelen die beschikbaar zijn om ons te helpen een deel van de monotonie die daarmee gepaard gaat te automatiseren, vooral binnen PHP-programmering.

Als je de eerste twee artikelen in de serie niet hebt gelezen, raad ik het aan omdat ze een aantal voorwaarden behandelen die we hebben voordat we verder gaan met de rest van het artikel.

De artikelen zijn:

  1. PHP CodeSniffer gebruiken met WordPress: Code Smells begrijpen
  2. PHP CodeSniffer gebruiken met WordPress: PHP CodeSniffer installeren en gebruiken

Kort gezegd, de bovenstaande artikelen introduceren het concept van codegeur, dat we hebben gedefinieerd als het volgende:

[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. 

En ik zal u door de stappen leiden die nodig zijn om PHP CodeSniffer op uw machine te installeren.

Maar als je het tot nu toe hebt gehaald, neem ik aan dat je een WordPress-ontwikkelaar bent en je wilt PHP CodeSniffer zo configureren dat het eventuele problemen in je code oplost, omdat het betrekking heeft op de coderingsstandaarden van WordPress..

Dat is goed! Want in de rest van dit artikel is dat precies wat we gaan behandelen.

voorwaarden

Dit zou een zeer korte lijst moeten zijn. Als je de reeks tot op dit punt hebt gevolgd, moet je beschikken over:

  • een versie van PHP (bij voorkeur 5.6.10 of later)
  • PHP CodeSniffer
  • Componist

Dit alles wordt uitgebreid behandeld in de vorige artikelen van de serie, maar als je zo ver bent gekomen en je vertrouwd bent met de opdrachtregel, zou dit een makkie moeten zijn in vergelijking met wat we tot nu toe hebben gedaan..

Met dat gezegd, laten we aan de slag gaan.

De WordPress-regels voor PHP CodeSniffer

Zoek eerst de WordPress Coding Standards-regels op GitHub. Ze zijn gemakkelijk te vinden.

Je kunt alles over de details van het project lezen op de projectpagina, maar het belangrijkste dat ik wil delen is als volgt:

Dit project is een verzameling PHP_CodeSniffer-regels (sniffs) om code te valideren die is ontwikkeld voor WordPress. Het zorgt voor codekwaliteit en naleving van coderingsconventies, met name de officiële WordPress coderingsstandaarden.

Ik zou graag uw aandacht willen vestigen op de uitdrukking die verwijst naar de "officiële WordPress coderingsstandaarden." Merk op dat deze regels zijn gebaseerd op de coderingsstandaarden van WordPress. Dat wil zeggen, u kunt officieel niet naar hen verwijzen.

Als u op zoek bent naar een manier om de regels te doorzien die WordPress definieert, bekijkt u dit artikel in de Codex. Het is gemakkelijk te volgen, gemakkelijk te lezen, maar veel om te onthouden. Gelukkig hebben we de regelset hierboven gekoppeld.

Het belangrijkste om op te merken is dat zelfs als u niet bekend bent met de regels, de CodeSniffer de problemen met uw code zal vinden en u op de hoogte zal stellen van wat u moet oplossen. Hoewel u het Codex-artikel niet hoeft te lezen, kan het soms helpen bij het identificeren van wat nodig is op basis van de fouten of waarschuwingen die de sniffer genereert.

1. Installeer de WordPress-regels

Ervan uitgaande dat je PHP CodeSniffer correct hebt geïnstalleerd, laten we de WordPress-regels toevoegen aan de software. Voor deze tutorial ga ik alles doen via de opdrachtregel om zo platformonafhankelijk mogelijk te zijn. Aan het einde van de serie zal ik een paar woorden aanbieden met betrekking tot IDE's en regels.

Open uw Terminal en ga naar waar u uw exemplaar van PHP CodeSniffer hebt geïnstalleerd. Als u deze reeks zelfstudies hebt gevolgd, herinnert u zich waarschijnlijk dat we een composer.json bestand dat dit voor ons ophaalt. Zo niet, onthoud om te creëren composer.json in de hoofdmap van uw project en voeg dit toe aan het bestand:

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

Eenmaal klaar, ren $ composer update van je terminal en je hebt alles wat je nodig hebt om van start te gaan. Voer de volgende opdracht uit om de installatie te controleren:

$ vendor / bin / phpcs --version

En je zou iets als de volgende output moeten zien:

PHP_CodeSniffer versie 2.6.0 (stabiel) door Squiz (http://www.squiz.net)

Perfect. Laten we vervolgens de WordPress-regels installeren. Aangezien we Composer gebruiken (en dit blijven doen), is dit heel gemakkelijk.

Voer de volgende opdracht uit vanuit de hoofdmap van uw project:

componist create-project wp-coding-standards / wpcs: dev-master --no-dev

Merk op dat u mogelijk de volgende vraag krijgt:

Wilt u de bestaande VCS (.git, .svn ...) geschiedenis verwijderen? [Y, n]?

Als je weet wat je doet, ga dan verder en selecteer 'n'; anders is het goed om 'y' te raken.

2. Voeg de regels toe aan PHP CodeSniffer

Nu PHP CodeSniffer is geïnstalleerd en de WordPress-regels zijn geïnstalleerd, moeten we ervoor zorgen dat PHP CodeSniffer op de hoogte is van onze nieuwe regelset. Om dit te doen, moeten we de volgende opdracht invoeren in de opdrachtregel. 

Voer de volgende opdracht in vanuit de hoofdmap van uw projectdirectory:

$ vendor / bin / phpcs --config-set installed_paths wpcs

Om te controleren of de nieuwe regels zijn toegevoegd, kunnen we PHP CodeSniffer vragen om ons de sets regels te melden die momenteel beschikbaar zijn. Voer in de Terminal de volgende opdracht in:

$ vendor / bin / phpcs -i

En je zou de volgende uitvoer (of iets vergelijkbaars) moeten zien:

De geïnstalleerde coderingsstandaarden zijn MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra en WordPress-VIP

Merk op in de regel hierboven dat we verschillende sets regels hebben met betrekking tot WordPress. Best wel netjes, toch? Laten we natuurlijk eens kijken hoe dit zich opstapelt als we de regelsets uitvoeren tegen een plug-in zoals Hallo Dolly.

3. PHP CodeSniffer uitvoeren tegen WordPress-projecten

Ervan uitgaande dat u werkt uit een map die een WordPress-plug-in bevat, kunt u de volgende stap overslaan. Als je het daarentegen wel doet geen kopie van een WordPress-script, -bestand, -thema of -plug-in geïnstalleerd in de projectdirectory, ga je gang en kopieer er nu een naar je projectdirectory.

Zoals gezegd, zullen we de Hallo Dolly inpluggen.

Om PHP CodeSniffer uit te voeren met de WordPress-regels tegen de bestanden in de plugin-directory, voert u de volgende opdracht in de Terminal in:

$ vendor / bin / phpcs --standard = WordPress hallo-dolly

Dit resulteert in uitvoer die moet overeenkomen met wat u hier ziet:

FILE: /Users/tommcfarlin/Desktop/tutsplus_demo/hello-dolly/hello.php -------------------------------- -------------------------------------- GEVONDEN 14 FOUTEN DIE 14 LIJNEN BEÏNVLOEDEN ------ -------------------------------------------------- -------------- 2 | FOUT | Ontbrekende korte beschrijving in doc comment 5 | FOUT | Na het bestand moet er precies één lege regel zijn | opmerking 6 | FOUT | Lege regel vereist voordat blokcommentaar 15 | FOUT | U moet "/ **" stijlopmerkingen gebruiken voor een functie | | opmerking 46 | FOUT | Inline opmerkingen moeten eindigen in full-stops, uitroep | | merken of vraagtekens 49 | FOUT | Inline opmerkingen moeten eindigen in full-stops, uitroep | | merken of vraagtekens 53 | FOUT | Inline opmerkingen moeten eindigen in full-stops, uitroep | | merken of vraagtekens 54 | FOUT | U moet "/ **" stijlopmerkingen gebruiken voor een functie | | opmerking 56 | FOUT | Naar verwachting een volgende escape-functie (zie | | Codex voor 'Data Validation'), niet '"

$ gekozen

"'59 | FOUT | Inline commentaar moet eindigen in full-stops, uitroeptekens | | marks of vraagtekens 62 | FOUT | Inline commentaar moet eindigen in full-stops, uitroep | | marks, of vraagtekens 63 | ERROR | Je moet gebruik "/ **" stijl commentaar voor een functie | | commentaar 64 | FOUT | Inline commentaar moet eindigen in full-stops, uitroep | | tekens, of vraagtekens 67 | FOUT | Verwacht volgende ding als een ontsnappende functie (zie | | Codex voor 'Gegevensvalidatie'), niet '"| | ' ----------------------------------------------------------------------

Natuurlijk kunnen sommige van deze dingen veranderen, afhankelijk van wanneer u deze zelfstudie leest.

De fouten moeten vrij duidelijk zijn over wat moet worden opgelost:

  • De eerste kolom geeft de regel aan waarin het probleem zich voordoet.
  • De tweede kolom bepaalt of er een fout of een waarschuwing is.
  • In de derde kolom wordt het probleem uitgelegd en wordt aangegeven wat er van de code wordt verwacht.

Let op: hoewel dit fouten of waarschuwingen zijn, werkt de code uiteraard nog steeds. Maar laten we dit van begin tot einde doornemen en kijken hoe het is om een ​​plug-in te repareren, misschien wel de meest populaire sinds het bij elke installatie van WordPress komt, en bekijk de verschillen in de kwaliteit van de code.

4. Refactoren Hallo Dolly

Let op de plug-in, voordat we eraan gaan werken, bevat de volgende broncode:

Hallo, Dolly in de rechterbovenhoek van uw beheerdersscherm op elke pagina. Auteur: Matt Mullenweg Versie: 1.6 Auteur URI: http://ma.tt/ * / function hello_dolly_get_lyric () / ** Dit zijn de songteksten van Hello Dolly * / $ lyrics = "Hallo, Dolly Nou, hallo, Dolly It's zo leuk om je terug te hebben waar je thuishoort. Je bent op zoek naar deining, Dolly ik kan het zeggen, Dolly. Je bent nog steeds aan het gloeien, je bent nog steeds kraaig Je gaat nog steeds sterk We voelen de kamer slingeren Terwijl de band speelt 'Een van je oude favoriete liedjes van weleer toen So, neem haar wrap, jongens Vind haar een lege ronde, jongens Dolly zal nooit meer weggaan Hallo, Dolly Nou, hallo, Dolly Het is zo leuk om je terug te hebben je hoort Je ziet er opzwellen, Dolly Ik kan het zeggen, Dolly Je bent nog steeds aan het gloeien, je bent nog steeds kraaig Je gaat nog steeds sterk We voelen de kamer slingeren Terwijl de band speelt Een van je oude favoriete nummers van oudsher wanneer Golly, goh, jongens Zoek haar een lege knie, jongens Dolly zal nooit verdwijnen Dolly zal nooit verdwijnen Dolly zal nooit meer weggaan "; // Hier splitsen we het in regels $ lyrics = explode ("\ n", $ lyrics); // En kies vervolgens willekeurig een regelterugloop wptexturize ($ lyrics [mt_rand (0, count ($ lyrics) - 1)]);  // Dit geeft alleen de gekozen regel weer, we zullen het later positioneren functie hello_dolly () $ chosen = hello_dolly_get_lyric (); echo "

$ gekozen

"; // Nu stellen we die functie in om uit te voeren wanneer de actie admin_notices add_action wordt genoemd ('admin_notices', 'hello_dolly'); // We hebben CSS nodig om de alinea-functie te positioneren dolly_css () // Dit zorgt ervoor dat de positionering ook goed is voor talen die van rechts naar links worden geschreven $ x = is_rtl ()? 'left': 'right'; echo " "; add_action ('admin_head', 'dolly_css');?>

Het zou relatief eenvoudig te volgen moeten zijn, aangezien het slechts een paar elementaire PHP-functies gebruikt en Matt's een goede reactie op de code heeft gegeven.

Maar gelet op de 14 fouten die de CodeSniffer heeft gevonden, laten we de plugin refactoren. Rekening houdend met de fouten die ze hebben gepresenteerd en wat het verwacht te zien, laten we elk van hen aanspreken.

Eenmaal klaar, zou de plug-in er als volgt uit moeten zien:

Hallo, Dolly in de rechterbovenhoek van uw beheerdersscherm op elke pagina. * Auteur: Matt Mullenweg * Versie: 1.6 * Auteur URI: http://ma.tt/ * / / ** * Bepaalt de tekst voor 'Hallo Dolly'. * * @return string Een willekeurige regel van de songtekst naar de song. * / functie hello_dolly_get_lyric () / ** Dit zijn de songteksten van Hello Dolly * / $ lyrics = "Hallo, Dolly Nou, hallo, Dolly. Het is zo leuk om je terug te brengen naar waar je thuishoort. Je ziet er geweldig uit, Dolly I kan vertellen, Dolly. Je bent nog steeds aan het gloeien, je bent nog steeds kraaig Je gaat nog steeds sterk We voelen de kamer slingeren Terwijl de band speelt Een van je oude favoriete liedjes van heel lang toen So, neem haar wrap , jongens Vind haar een lege ronde, jongens Dolly zal nooit meer weggaan Hallo, Dolly Nou, hallo, Dolly Het is zo leuk om je terug te hebben waar je thuishoort. Je ziet er opzwellen, Dolly, ik kan het zeggen, Dolly You're nog steeds gloeiend, je bent nog steeds kraaig Je gaat nog steeds sterk We voelen de kamer slingeren Terwijl de band een van je oude favoriete liedjes speelt van toen Golly, jongen, jongens haar een lege knie vinden Dolly zal nooit verdwijnen Dolly zal nooit verdwijnen Dolly zal nooit meer weggaan "; // Hier splitsen we het in lijnen. $ lyrics = explode ("\ n", $ songteksten); // En kies vervolgens willekeurig een regel. return wptexturize ($ lyrics [mt_rand (0, count ($ lyrics) - 1)]);  add_action ('admin_notices', 'hello_dolly'); / ** * Dit geeft alleen de gekozen regel weer, we zullen het later plaatsen. Deze functie is * ingesteld om uit te voeren wanneer de actie admin_notices wordt aangeroepen. * / functie hello_dolly () $ chosen = hello_dolly_get_lyric (); echo "

$ gekozen

"; // WPCS: XSS OK. Add_action ('admin_head', 'dolly_css'); / ** * Voeg wat CSS toe om de alinea te positioneren. * / Function dolly_css () / ** * Dit zorgt ervoor dat de positionering is ook goed voor talen van rechts naar links. * / $ x = is_rtl ()? 'left': 'right'; echo " "; // WPCS: XSS OK.

Merk op dat de plugin blijft werken en dat de code wat schoner is. Laten we ten slotte controleren of dit de PHP CodeSniffer-test doorstaat. Laten we de code die we hierboven hebben gebruikt opnieuw uitvoeren om de plug-in eerst te evalueren.

$ vendor / bin / phpcs --standard = WordPress hallo-dolly

En de uitvoer die we zien:

Skyhopper5: tutsplus_demo tommcfarlin $

Precies: er zou geen uitvoer moeten zijn. In plaats daarvan zou het een terugkeer moeten zijn naar de standaard opdrachtprompt.

Uitstekend. De plug-in is op niveau gebracht. Dit is de reden waarom het hebben van een code sniffer zo waardevol is: het vindt de fouten in uw code op basis van de regels die u definieert en meldt eventuele fouten die mogelijk bestaan.

Uiteindelijk zorgt dit ervoor dat u de geschreven code van de hoogste kwaliteit vrijgeeft op een productieniveau. Dit betekent niet dat u eenheidstests of andere soorten testen moet vermijden, en dit betekent ook dat bugs niet bestaan. Het betekent alleen dat uw code voldoet aan een hoge standaard.

Conclusie

En daarmee besluiten we de serie over het gebruik van PHP CodeSniffer. Bedenk dat we tijdens de serie het idee van codegeur hebben behandeld, hoe we ze kunnen refactiveren en welke hulpmiddelen beschikbaar zijn voor PHP-toepassingen..

In dit artikel hebben we gezien hoe we een gegeven set regels voor de WordPress coderingsstandaarden kunnen gebruiken om onze code te evalueren tijdens het werken aan een nieuw of een bestaand project. Merk op dat sommige IDE's de mogelijkheid ondersteunen om de regels uit te voeren tijdens het schrijven van code.

Hoewel dat buiten het bestek van deze specifieke tutorial valt, kunt u hier op verschillende plaatsen op het web middelen voor vinden. Zoek eenvoudig naar uw IDE op naam, bepaal de ondersteuning voor PHP CodeSniffer en zorg ervoor dat u de WordPress-regels installeert zoals we in deze tutorial hebben beschreven.

Als je dit artikel of deze serie leuk vond, ben je misschien geïnteresseerd in het bekijken van andere dingen die ik zowel op mijn profielpagina als op mijn blog heb geschreven. Je kunt me ook volgen via Twitter op @tommcfarlin, waar ik vaak praat over en deel verschillende softwareontwikkelmethoden in de context van WordPress.

Met dat gezegd, aarzel dan niet om eventuele vragen of opmerkingen in de feed hieronder te laten en ik zal ernaar streven om op elk van hen te reageren.

Middelen

  • WordPress coderingsstandaarden voor PHP CodeSniffer
  • Hallo Dolly
  • wptexturize
  • Gegevensvalidatie
  • WPCS: XSS OK.