PHP CodeSniffer mit WordPress verwenden Installieren und Verwenden der WordPress-Regeln

Wenn Sie gerade an der Serie teilnehmen, haben wir uns mit dem Thema Codegerüche befasst, wie Sie sie umgestalten können, und mit Tools, die uns dabei helfen, die Monotonie zu automatisieren, die damit verbunden ist, insbesondere in der PHP-Programmierung.

Wenn Sie die ersten beiden Artikel der Serie nicht gelesen haben, empfehle ich es, da sie einige Vorbedingungen abdecken, bevor wir mit dem Rest des Artikels fortfahren.

Die Artikel sind:

  1. PHP CodeSniffer mit WordPress verwenden: Code-Gerüche verstehen
  2. PHP CodeSniffer mit WordPress verwenden: PHP CodeSniffer installieren und verwenden

Kurz gesagt, die obigen Artikel werden das Konzept der Codegerüche vorstellen, das wir wie folgt definiert haben:

[Ein] Codegeruch, im Computerprogrammiercode auch als schlechter Geruch bekannt, bezieht sich auf ein Symptom im Quellcode eines Programms, das möglicherweise auf ein tieferes Problem hinweist. 

Ich werde Sie durch die Schritte führen, die zur Installation von PHP CodeSniffer auf Ihrem Computer erforderlich sind.

Aber wenn Sie es soweit geschafft haben, nehme ich an, Sie sind ein WordPress-Entwickler, und Sie möchten PHP CodeSniffer so konfigurieren, dass es Probleme in Ihrem Code erkennt, die sich auf die WordPress-Codierstandards beziehen.

Das ist gut! Im Rest dieses Artikels werden wir genau das behandeln.

Voraussetzungen

Dies sollte eine sehr kurze Liste sein. Wenn Sie die Serie bis zu diesem Punkt mitverfolgt haben, müssen Sie Folgendes haben:

  • eine Version von PHP (vorzugsweise 5.6.10 oder höher)
  • PHP CodeSniffer
  • Komponist

All das wird in den vorangegangenen Artikeln der Serie ausführlich behandelt. Wenn Sie jedoch so weit gekommen sind und mit der Befehlszeile vertraut sind, sollte dies im Vergleich zu dem, was wir bisher gemacht haben, ein Kinderspiel sein.

Nachdem alles gesagt ist, lass uns anfangen.

Die WordPress-Regeln für PHP CodeSniffer

Suchen Sie zunächst die Regeln für WordPress-Codierungsstandards auf GitHub. Sie sind leicht zu finden.

Sie können alles über die Details des Projekts auf der Projektseite nachlesen, aber das Wichtigste, das ich Ihnen mitteilen möchte, ist Folgendes:

Dieses Projekt ist eine Sammlung von PHP_CodeSniffer-Regeln (Sniffs) zur Überprüfung von für WordPress entwickelten Code. Es gewährleistet die Codequalität und die Einhaltung der Codierungskonventionen, insbesondere der offiziellen WordPress-Codierungsstandards.

Ich möchte Ihre Aufmerksamkeit auf den Satz lenken, der auf die "offiziellen WordPress-Codierstandards" verweist. Beachten Sie, dass diese Regeln auf den WordPress-Codierungsstandards basieren. Das heißt, Sie können sie nicht offiziell referenzieren.

Wenn Sie nach einem Weg suchen, die von WordPress definierten Regeln durchzusehen, lesen Sie diesen Artikel im Codex. Es ist leicht zu folgen, leicht zu lesen, aber es ist viel zu merken. Zum Glück haben wir die oben verlinkte Regel.

Wichtig ist, dass der CodeSniffer die Probleme mit Ihrem Code findet und Sie darüber informiert, was Sie beheben müssen, auch wenn Sie mit den Regeln nicht vertraut sind. Obwohl Sie den Codex-Artikel nicht lesen müssen, kann er manchmal helfen, anhand der Fehler oder Warnungen, die der Sniffer generiert, herauszufinden, was erforderlich ist.

1. Installieren Sie die WordPress-Regeln

Vorausgesetzt, Sie haben PHP CodeSniffer ordnungsgemäß installiert, fügen wir der Software die WordPress-Regeln hinzu. Für dieses Tutorial werde ich alles über die Befehlszeile tun, um so plattformunabhängig wie möglich zu sein. Ich werde am Ende der Serie ein paar Worte zu IDEs und Regeln geben.

Öffnen Sie Ihr Terminal und navigieren Sie zu der Stelle, an der Sie PHP CodeSniffer installiert haben. Wenn Sie diese Serie von Tutorials mitverfolgt haben, erinnern Sie sich wahrscheinlich daran, dass wir eine haben composer.json Datei, die dies für uns einziehen wird. Wenn nicht, denken Sie daran, zu erstellen composer.json im Stammverzeichnis Ihres Projekts und fügen Sie dies der Datei hinzu:

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

Einmal fertig, renne $ composer-Update Von Ihrem Terminal aus haben Sie alles, was Sie brauchen, um loszulegen. Führen Sie den folgenden Befehl aus, um die Installation zu überprüfen:

$ vendor / bin / phpcs --version

Und Sie sollten ungefähr die folgende Ausgabe sehen:

PHP_CodeSniffer Version 2.6.0 (stabil) von Squiz (http://www.squiz.net)

Perfekt. Als nächstes installieren wir die WordPress-Regeln. Da wir Composer verwenden (und dies auch weiterhin tun werden), ist dies sehr einfach.

Führen Sie den folgenden Befehl aus dem Stammverzeichnis Ihres Projekts aus:

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

Beachten Sie, dass Sie möglicherweise mit der folgenden Frage aufgefordert werden:

Möchten Sie den vorhandenen VCS-Verlauf (.git, .svn…) entfernen? [Y, n]?

Wenn Sie wissen, was Sie tun, können Sie "n" auswählen. Andernfalls werden Sie gut 'y' treffen.

2. Fügen Sie die Regeln zu PHP CodeSniffer hinzu

Nun, da PHP CodeSniffer installiert ist und die WordPress-Regeln installiert sind, müssen wir sicherstellen, dass PHP CodeSniffer unseren neuen Regelsatz kennt. Dazu müssen wir den folgenden Befehl in die Befehlszeile eingeben. 

Geben Sie im Stammverzeichnis Ihres Projektverzeichnisses den folgenden Befehl ein:

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

Um zu überprüfen, ob die neuen Regeln hinzugefügt wurden, können wir PHP CodeSniffer bitten, uns die Regelsätze mitzuteilen, die derzeit verfügbar sind. Geben Sie im Terminal den folgenden Befehl ein:

$ vendor / bin / phpcs -i

Und Sie sollten die folgende Ausgabe sehen (oder etwas sehr Ähnliches):

Die installierten Codierungsstandards sind MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra und WordPress-VIP

Beachten Sie in der obigen Zeile, dass wir einige Regeln bezüglich WordPress haben. Ziemlich ordentlich, nicht wahr? Natürlich sehen wir uns an, wie sich das stapelt, wenn wir die Regelsätze gegen ein Plugin ausführen Hallo Dolly.

3. Ausführen von PHP CodeSniffer gegen WordPress-Projekte

Angenommen, Sie arbeiten an einem Verzeichnis, das ein WordPress-Plugin enthält, und können dann den folgenden Schritt überspringen. Wenn Sie dagegen tun Wenn im Projektverzeichnis keine Kopie eines WordPress-Skripts, einer Datei, eines Designs oder eines Plugins installiert ist, kopieren Sie sie jetzt in Ihr Projektverzeichnis.

Wie bereits erwähnt, werden wir das testen Hallo Dolly Plugin.

Um PHP CodeSniffer mit den WordPress-Regeln für die Dateien im Plugin-Verzeichnis auszuführen, geben Sie im Terminal den folgenden Befehl ein:

$ vendor / bin / phpcs --standard = WordPress-Hallo-Dolly

Dies führt zu einer Ausgabe, die dem entsprechen sollte, was Sie hier sehen:

Datei: /Users/tommcfarlin/Desktop/tutsplus_demo/hello-dolly/hello.php -------------------------------- -------------------------------------- GEFUNDEN 14 FEHLER, DIE 14 LINIEN BETROFFEN ------ -------------------------------------------------- -------------- 2 | ERROR | Fehlende Kurzbeschreibung in doc comment 5 | ERROR | Nach der Datei muss genau eine Leerzeile stehen | Kommentar 6 | ERROR | Leerzeile vor dem Blockkommentar erforderlich 15 | ERROR | Sie müssen "/ **" Stilkommentare für eine Funktion verwenden | Kommentar 46 | ERROR | Inline-Kommentare müssen in Punkt (Ausrufezeichen) enden | Marken oder Fragezeichen 49 | ERROR | Inline-Kommentare müssen in Punkt (Ausrufezeichen) enden | Marken oder Fragezeichen 53 | ERROR | Inline-Kommentare müssen in Punkt (Ausrufezeichen) enden | Marken oder Fragezeichen 54 | ERROR | Sie müssen "/ **" Stilkommentare für eine Funktion verwenden | Kommentar 56 | ERROR | Als nächstes erwartet man eine Escape-Funktion (siehe | | Codex für 'Datenvalidierung'), nicht ''

$ gewählt

"'59 | ERROR | Inline-Kommentare müssen in Punkt, Ausrufezeichen | | oder Fragezeichen 62 | ERROR | Inline-Kommentare müssen in Punkt, Ausruf | | oder Fragezeichen | enden. 63 | ERROR | Sie müssen Verwenden Sie "/ **" - Stilkommentare für eine Funktion | | Kommentar 64 | ERROR | Inline-Kommentare müssen mit Punkt, Ausrufezeichen | | Markierungen oder Fragezeichen enden. 67 | ERROR | Erwartet wird als nächstes eine Escape-Funktion (siehe | Codex für 'Datenvalidierung'), nicht '' | | ' ----------------------------------------------------------------------

Natürlich können sich einige dieser Dinge ändern, abhängig davon, wann Sie dieses Tutorial lesen.

Die Fehler sollten ziemlich klar sein, was behoben werden muss:

  • Die erste Spalte gibt die Zeile an, in der das Problem besteht.
  • Die zweite Spalte bestimmt, ob ein Fehler oder eine Warnung vorliegt.
  • Die dritte Spalte erläutert das Problem und die Erwartungen an den Code.

Obwohl dies Fehler oder Warnungen sind, funktioniert der Code natürlich weiterhin. Aber lassen Sie uns das alles durchgehen und sehen, wie es ist, ein Plugin zu reparieren, das wohl das beliebteste ist, da es mit jeder WordPress-Installation kommt, und die Unterschiede in der Qualität des Codes überprüfen.

4. Umgestaltung Hallo Dolly

Beachten Sie, dass das Plugin den folgenden Quellcode enthält, bevor wir mit der Arbeit beginnen:

Hallo Dolly in der oberen rechten Ecke des Admin-Bildschirms auf jeder Seite. Autor: Matt Mullenweg Version: 1.6 Autor URI: http://ma.tt/ * / function hello_dolly_get_lyric () / ** Dies sind die Texte zu Hello Dolly * / $ lyrics = "Hallo, Dolly Nun, Hallo, Dolly Es ist So schön, dass du wieder da bist, wo du hingehörst. Du siehst an, dass du schwellst, Dolly, ich kann es sagen, Dolly. Du bist immer noch glühend. Du drängst immer noch. Du wirst immer noch stark. Wir spüren, wie der Raum während des Geschehens schwankt Band spielt eines Ihrer alten Lieblingslieder aus der Zeit, als So, nimm ihren Wrap, Kumpels, Finde eine leere Runde, Kumpels, Dolly wird nie wieder weggehen Hallo, Dolly Nun, Hallo, Dolly Es ist so schön, dass du wieder da bist du gehörst du schaust aus, Dolly, ich kann es sagen, Dolly Du glühst immer noch, du drängst dich immer noch. Du wirst immer noch stark sein. Wir spüren, wie der Raum schwankt, während die Band eine deiner alten spielt Lieblingslieder aus der Zeit, als Golly, gee, fellas ihr ein leeres Knie findet, fellas Dolly wird niemals weggehen Dolly wird niemals weggehen Dolly wird nie wieder weggehen "; // Hier teilen wir es in Zeilen auf $ lyrics = explode ("\ n", $ lyrics); // und dann zufällig eine Zeile auswählen wptexturize ($ lyrics [mt_rand (0, count ($ lyrics) - 1)]);  // Dies gibt nur die ausgewählte Linie wieder, wir positionieren sie später function hello_dolly () $ chosen = hello_dolly_get_lyric (); Echo "

$ gewählt

"; // Nun setzen wir diese Funktion so ein, dass sie ausgeführt wird, wenn die admin_notices-Aktion add_action ('admin_notices', 'hello_dolly') heißt; // Wir benötigen etwas CSS, um die Absatzfunktion dolly_css () zu positionieren. // Dies stellt sicher dass die Positionierung auch für Rechts-nach-Links-Sprachen gut ist $ x = is_rtl ()? 'left': 'right'; echo " "; add_action ('admin_head', 'dolly_css');?>

Es sollte relativ leicht zu folgen sein, da es nur ein paar grundlegende PHP-Funktionen verwendet und Matt den Code gut kommentiert.

Aber angesichts der 14 Fehler, die der CodeSniffer gefunden hat, wollen wir das Plugin umgestalten. Unter Berücksichtigung der Fehler und der erwarteten Fehler sollten wir uns mit jedem von ihnen befassen.

Sobald das Plugin fertig ist, sollte es folgendermaßen aussehen:

Hallo Dolly in der oberen rechten Ecke des Admin-Bildschirms auf jeder Seite. * Autor: Matt Mullenweg * Version: 1.6 * Autor URI: http://ma.tt/ * / / ** * Definiert den Text für 'Hello Dolly'. * * @return string Eine zufällige Zeile vom Text zum Song. * / function hello_dolly_get_lyric () / ** Dies sind die Texte zu Hello Dolly * / $ lyrics = "Hallo, Dolly Nun, Hallo, Dolly Es ist so schön, dich wieder da zu haben, wo du hingehörst. Du schaust in die Höhe, Dolly I Kann sagen, Dolly Du glühst immer noch, Du bist immer noch dichter Du wirst immer noch stark sein Wir fühlen, wie der Raum schwankt Während die Band einen Ihrer alten Lieblingslieder spielt, als Sie die Verpackung übernommen haben , Kumpel, finde ihr eine leere Runde, Kumpels, Dolly wird nie wieder weggehen Hallo, Dolly Nun, Hallo, Dolly, es ist so schön, dass du wieder da bist, wo du hingehörst. Du siehst an, dass du schwellst, Dolly, ich kann es sagen, Dolly immer noch glühend, du drängst dich immer noch. Du wirst immer noch stark. Wir spüren, wie der Raum schwankt, während die Band spielt. Einer deiner alten Lieblingssongs von damals, als Golly, gee, fellas, ihr ein leeres Knie sucht Dolly wird niemals weggehen Dolly wird niemals weggehen Dolly wird nie wieder weggehen "; // Hier teilen wir es in Zeilen auf. $ lyrics = explodieren ("\ n", $ lyrics); // Und wähle dann zufällig eine Linie. return wptexturize ($ lyrics [mt_rand (0, Anzahl ($ lyrics) - 1)]);  add_action ('admin_notices', 'hello_dolly'); / ** * Dies gibt nur die ausgewählte Linie wieder, wir werden sie später positionieren. Diese Funktion * ist so eingerichtet, dass sie ausgeführt wird, wenn die Aktion admin_notices aufgerufen wird. * / function hello_dolly () $ chosen = hello_dolly_get_lyric (); Echo "

$ gewählt

"; // WPCS: XSS OK. Add_action ('admin_head', 'dolly_css'); / ** * Fügen Sie CSS hinzu, um den Absatz zu positionieren. * / Function dolly_css () / ** * Dadurch wird die Positionierung sichergestellt ist auch gut für Sprachen von links nach rechts. * / $ x = is_rtl ()? 'left': 'right'; echo " "; // WPCS: XSS OK.

Beachten Sie, dass das Plugin weiterhin funktioniert und der Code etwas sauberer ist. Als letztes überprüfen wir, ob der PHP CodeSniffer-Test erfolgreich ist. Lassen Sie uns den Code, den wir oben verwendet haben, erneut ausführen, um das Plugin zunächst auszuwerten.

$ vendor / bin / phpcs --standard = WordPress-Hallo-Dolly

Und die Ausgabe, die wir sehen:

Skyhopper5: tutsplus_demo tommcfarlin $

Genau: Es sollte keine Ausgabe geben. Stattdessen sollte es eine Rückkehr zur Standardbefehlsaufforderung sein.

Ausgezeichnet. Das Plugin wurde auf den Standard gebracht. Aus diesem Grund ist ein Code-Sniffer so wertvoll: Er findet die Fehler in Ihrem Code anhand der von Ihnen definierten Regeln und meldet dann etwaige Fehler.

Dies stellt letztendlich sicher, dass Sie Code mit der höchsten Qualität in eine Produktionsumgebung einbinden. Das bedeutet jetzt nicht, dass Sie Unit-Tests oder andere Arten von Tests vermeiden sollten. Dies bedeutet auch, dass keine Fehler vorhanden sind. Es bedeutet nur, dass Ihr Code einem hohen Standard entspricht.

Fazit

Damit schließen wir die Reihe zur Verwendung von PHP CodeSniffer ab. Erinnern wir uns daran, dass wir uns in der gesamten Serie mit der Idee von Codegerüchen befasst haben, wie man sie umgestalten kann und welche Tools bei der Arbeit mit PHP-Anwendungen zur Verfügung stehen.

In diesem Artikel haben wir gesehen, wie wir einen Satz von Regeln für die WordPress-Codierungsstandards verwenden können, um unseren Code während der Arbeit an einem neuen oder vorhandenen Projekt zu bewerten. Beachten Sie, dass einige IDEs die Möglichkeit unterstützen, die Regeln beim Schreiben von Code auszuführen.

Obwohl dies den Rahmen dieses speziellen Tutorials sprengt, können Sie an verschiedenen Stellen im Web Ressourcen dafür finden. Suchen Sie einfach nach Ihrer IDE anhand des Namens, ermitteln Sie deren Unterstützung für PHP CodeSniffer, und installieren Sie anschließend die in diesem Tutorial beschriebenen WordPress-Regeln.

Wenn Ihnen dieser Artikel oder diese Serie gefallen hat, interessieren Sie sich vielleicht auch für andere Dinge, die ich auf meiner Profilseite oder in meinem Blog geschrieben habe. Sie können mir auch auf Twitter unter @tommcfarlin folgen, wo ich häufig über Softwareentwicklungspraktiken im Rahmen von WordPress spreche und diese teile.

Zögern Sie nicht, Fragen oder Kommentare im Feed unten zu hinterlassen, und ich werde versuchen, auf jeden einzelnen von ihnen zu antworten.

Ressourcen

  • WordPress-Codierungsstandards für PHP CodeSniffer
  • Hallo Dolly
  • wptexturize
  • Datenvalidierung
  • WPCS: XSS OK.