I den första artikeln i den här serien definierade vi kodlukt och tittade på några exempel på vad de är och hur vi kan refactor dem så att kvaliteten på koden förbättras. Återkallelse:
[A] kodlukt, även känd som en dålig lukt, i datorprogrammeringskod, hänvisar till något symptom i källkoden för ett program som möjligen indikerar ett djupare problem.
I slutändan arbetar vi för att implementera WordPress-specifika kodsnusningsregler, men innan vi gör det är det viktigt att bekanta sig med PHP CodeSniffer.
I den här artikeln ska vi titta på vad PHP CodeSniffer är, hur man installerar det, hur man kör det mot ett exemplarskript och hur man refactorar skrivet. Då tittar vi på hur vi ska gå vidare till WordPress-specifik kod.
Om du har en lokal utvecklingsmiljö upprättad, då är du bra Om inte, det är bra. Jag ger några länkar som gör att du snabbt kan komma igång.
Med det sagt, låt oss börja.
Innan du börjar, är det viktigt att du har någon typ av lokal utvecklingsmiljö, även om det bara innehåller en kopia av PHP-tolken.
Observera att om du kör en variant av Linux eller OS X, finns det en chans att du redan har PHP installerat. Om du gör det behöver du inte oroa dig för något annat i det här avsnittet. För att bestämma om du har PHP installerat, kör följande kommando på kommandoraden:
$ php -v
Du borde se något som följande (även om din produktion kan vara annorlunda baserat på den version av PHP du har valt att köra):
PHP 5.6.10 (cli) (byggt: 6 juli 2015 14:28:54) Copyright (c) 1997-2015 PHP-koncernen Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
Om du är mer avancerad och har flera kopior av projektet installerat kan du köra:
$ vilken php
Och du borde se något så här:
/Applications/MAMP/bin/php/php5.6.10/bin/php
Även om din produktion varierar beroende på var din kopia av PHP är installerad.
Även om denna serie är inriktad främst mot nybörjare kan det finnas några av dig som är bekanta med att ladda ner en kopia av PHP och installera den på ditt system. Om det här är du, ta sedan en kopia av PHP från projektets hemsida, installera den och gå tillbaka till den här handledningen.
Om det däremot är nytt för dig kan du välja att använda en av installatörerna för ditt operativsystem på PHP-hemsidan som är länkad ovan eller ett av de angivna verktygen nedan.
Alla dessa paket har egna installatörer och installerar PHP, MySQL och Apache. Som tidigare nämnts är vi främst intresserade av att ha en kopia av PHP tillgänglig på vårt system.
När dessa är installerade kan du försöka köra kommandon som nämns i den första delen av det här avsnittet (eller motsvarande system) och du bör se liknande utdata.
Om du inte gör det behöver du förmodligen lägga till sökvägen till PHP till dina miljövariabler. Detta ligger utanför ramen för denna handledning, så var god och se dokumentationen för den version av projektet du installerade.
Med PHP nu installerat, är vi redo att komma igång med att fånga och städa upp våra kodluktar.
Du hittar den officiella PHP CodeSniffer-programvaran på GitHub.
Från projektets dokumentation:
PHP_CodeSniffer är en uppsättning av två PHP-skript; den huvudsakligaphpcs
skript som anger PHP, JavaScript och CSS-filer för att upptäcka överträdelser av en definierad kodningsstandard och en sekundphpcbf
manus för att automatiskt korrigera kodningsstandardbrott. PHP_CodeSniffer är ett viktigt utvecklingsverktyg som säkerställer att din kod förblir ren och konsekvent.
Om du aldrig har sett någonting så här tidigare, låter det väldigt snyggt eller inte? Jag menar att det är ett verktyg som är avsett för att säkerställa att en viss kvalitetsnivå finns i din kod!
Även om projektet nämner språk som CSS och JavaScript, fokuserar vi på PHP i den här serien. Det betyder dock inte att det är viktigt att kontrollera kvaliteten på de specifika språkfilerna i dina projekt.
Så mycket som det låter höjdar det fortfarande frågorna: Hur installerar vi programvaran, och hur börjar vi kontrollera vår kod?
Låt oss svara på båda dessa frågor nu.
Om du skulle utföra en Google-sökning för hur du installerar PHP CodeSniffer kommer du sannolikt att hamna med en rad resultat, varav många kommer att innehålla något som kallas Pear.
Pear var en gång de facto-paketdistributionssystemet för PHP-bibliotek, och även om många paket fortfarande är tillgängliga via mjukvaran, blir den också pensionerad från andra populära paket (till exempel PHPUnit).
Av denna anledning rekommenderar jag ofta att använda andra metoder för installation när de är tillgängliga. Detta inkluderar att använda verktyg som Kompositör, vilket är det förmodligen den mest populära dependence management-mjukvaran för PHP.
Om du aldrig har använt Composer tidigare, oroa dig inte. Jag ska ge alla steg som du behöver för att få PHP CodeSniffer upp och köra på din maskin med Kompositör och med minimal arbete. Om du är intresserad av att lära dig mer, har vi en hel del handledning om hur du använder kompositören, så gärna checka ut dem.
Innan vi installerar PHP CodeSniffer, behöver vi faktiskt installera Kompositör. Lyckligtvis är det väldigt lätt att göra det när du har PHP upp och kör på din lokala dator.
För att installera Kompositör kan du ladda ner den här filen och sedan utföra följande kommando på kommandoraden från var du laddat ner kompositörinstallatören:
$ php composer-setup.php --install-dir = bin --filename = kompositör
En anteckning från installationsanvisningarna för Composer:
Du kan installera Kompositör till en specifik katalog med hjälp av--install-dir
alternativ och dessutom (re) namnge det också med hjälp av--filnamn
alternativ.
För mer information, vänligen hänvisa till hämtningsanvisningarna eller se hela projektet på GitHub.
När det är installerat kan du nu använda Composer för att installera tredjepartsberoende, till exempel PHP CodeSniffer, i dina projekt. Notera var du har installerat din kopia av Kompositör. Du måste referera till det när du kör det eftersom vi ska köra det från kommandoraden.
Hur som helst, låt oss gå vidare och skapa en katalog där vi ska köra våra PHP-skript. Även om vi inte har något i den här katalogen ännu, måste vi skapa en fil som heter composer.json
.
Jag ska ringa min katalog tutsplus-demo
, och jag kommer att inkludera min Composer-fil i den katalogen för att komma igång.
När du har skapat filen placerar du följande kod i JSON-filen:
"kräver": "squizlabs / php_codesniffer": "2. *"
Kortfattat berättar detta Kompositören om att installera PHP CodeSniffer när du utför rätt kommando. Observera att fordra
direktivet gör följande:
Listar paket som krävs av detta paket. Paketet kommer inte att installeras om inte dessa krav kan uppfyllas.
Du kan läsa mer om kompositörschemat i dokumentationen.
En gång kompositören är installerad och när du har din composer.json
filen ser ut som koden ovan är det dags att faktiskt installera PHP CodeSniffer. Utför följande kommando från kommandoraden:
$ komponentuppdatering
Observera att detta beror på idén Composer är tillgänglig offentligt på ditt system. Om inte kan du utföra det genom att skriva hela sökvägen till den installerade filen eller du kan lägga till den i dina miljövariabler och starta sedan om din terminalsession för att ladda om variablerna.
När kompositören har slutat arbeta bör du se något så här:
Och din tutsplus-kod
katalog ska nu se ut så här:
Observera att du har en leverantörskatalog. Det betyder att Composer installerat korrekt PHP CodeSniffer. Vid denna tidpunkt är vi redo att utvärdera vår PHP-kod.
Låt oss först ta ett exempel script. Den vi ska titta på finns i detta svar på Stack Overflow.
Skapa en fil i din tutsplus-demo
katalog och namnge den sample.php
. Kontrollera sedan att filen innehåller följande innehåll:
Spara ditt arbete. Därefter kan vi köra PHP CodeSniffer från kommandoraden och få den att utvärdera koden i skriptet ovan med standardinställningen.
Ange följande kommando från din terminal:
$ leverantör / bin / phpcs sample.php
Detta bör generera produktionen som innehåller följande:
Skyhopper5: tutsplus-demo tommcfarlin $ leverantör / bin / phpcs sample.php FIL: /Users/tommcfarlin/Desktop/tutsplus-demo/sample.php ------------------- -------------------------------------------------- - Funnit 4 fel som påverkar 4 linjer ------------------------------------------- --------------------------- 2 | FEL | [] Saknad fil doc kommentar 5 | FEL | [x] Inget utrymme hittat efter kommatecken i funktionssamtal 7 | FEL | [] Förväntad "om (...) \ n"; hittade "om (...) \ n" 9 | FEL | [] Förväntad "om (...) \ n"; hittade "om (...) \ n" ---------------------------------------- ------------------------------ PHPCBF KAN FASTSTÄLLA 1 MARKADE SNIFFOLITATIONER AUTOMATISKT ----------- -------------------------------------------------- --------- Tid: 46ms; Minne: 3.5Mb Skyhopper5: tutsplus-demo tommcfarlin $
Observera att det hittade fyra fel. Den första kolumnen berättar vilken rad felet är på, den andra kolumnen anger att det är ett fel (mot en varning) och sedan berättar resten om vad det förväntade sig att se mot vad det egentligen såg.
Så låt oss städa upp filen baserat på dessa fel. Generellt sett måste vi göra följande:
om
uttalanden i manuset.Slutresultatet skulle se ut så här:
* @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. basnamn ($ _ FILER [ "fileToUpload"] [ "name"]); $ uploadOk = 1; $ imageFileType = pathinfo ($ target_file, PATHINFO_EXTENSION); // Kontrollera om bildfilen är en faktisk bild eller falsk bild om (isset ($ _ POST ["submit"])) $ check = getimagesize ($ _ FILES ["fileToUpload"] ["tmp_name"]); om ($ check! == false) echo "Filen är en bild -". $ check ["mime"]. ""; $ uploadOk = 1; else echo "Filen är inte en bild."; $ uploadOk = 0; ?>
Därefter springa manuset igen och du får inte få någon utdata. Det vill säga du bör presenteras med standardkommandotolken. Ibland betyder det att något är trasigt, men i det här fallet betyder det att allt går som förväntat
Inte dåligt, rätt?
Tänk nu vad det här kan göra för större kodbaser och skript som du jobbar med dagligen.
Så viktigt som att utvärdera vår kod, för att undvika kodlukter, och att sträva efter högsta möjliga kvalitet, är verktyg som PHP CodeSniffer inte avsedda att användas som kryckor. Det betyder att vi inte har någon ursäkt för att skriva dålig kod eftersom ett annat verktyg kommer att fånga det.
För att det inte alltid gör det.
Istället menas detta som ett andra pass av sorts. Det betyder att vi ska fånga saker som vi kanske saknar när du skriver kod första, andra eller nionde gången. Det fina med det här programmet är att du kan ladda olika regler till PHP CodeSniffer beroende på miljö, ram eller bibliotek som du arbetar med.
Och det är precis vad vi ska göra med WordPress i nästa artikel.
När det gäller inledande material har vi täckt en hel del mark i denna handledning. Det vill säga, vi har tittat på att skapa en grundläggande utvecklingsmiljö på vår lokala maskin som innehåller PHP.
Därefter har vi tittat på Kompositören och hur den ska installeras på vårt system. Vi har skrivit vår första Composer-fil för att hämta beroenden, nämligen PHP CodeSniffer, och vi har även utvärderat och korrigerat resultat som tillhandahållits av programmet.
Om du är en PHP-utvecklare, hoppas jag att de två första artiklarna i serien har varit till hjälp, men om du är en WordPress-utvecklare så har vi lite mer att täcka.
I den slutliga artikeln i serien kommer vi att uppmärksamma oss på WordPress. Eftersom det har sin egen uppsättning kodningsstandarder kommer vi att titta på hur man laddar dessa regler i PHP CodeSniffer och sedan utvärderar plugins, temakoder och så vidare för att få en uppfattning om hur man använder det här i vår dag- dagligt arbete i våra WordPress-projekt.
Innan vi går vidare till nästa artikel, granska koden ovan och se till att du har PHP och PHP CodeSniffer installerat och att du är bekant med hur det fungerar, eftersom vi kommer att binda allt detta tillsammans.
Slutligen kan du granska alla mina kurser och handledning på min profilsida, och du kan följa mig på min blogg och / eller Twitter på @tommcfarlin där jag pratar om olika mjukvaruutveckling, särskilt i samband med WordPress.
Tveka inte att lämna några frågor eller kommentarer i foderet nedan, och jag vill sikta på att svara på var och en av dem.