PHPCS è uno strumento CLI open source che rileva le violazioni dello stile del codice di uno standard di codifica specificato e fornisce anche correzioni automatiche per regole risolvibili automaticamente. Voglio convincerti che anche se usi direttamente Pint o PHP-CS-Fixer, dovresti comunque considerare di aggiungere PHPCS alla tua raccolta.
Definire le regole PHPCS su più progetti in una configurazione di gruppo è noioso e lo spostamento delle regole tra i progetti è inevitabile. Probabilmente vorrai applicare regole coerenti in tutti i tuoi progetti senza troppi pensieri o sforzi.
Alla fine di questo tutorial, saprai come creare una serie di regole organizzative che puoi utilizzare per scansionare rapidamente tutti i tuoi progetti PHP.
Nella prima parte di questa serie, hai imparato come utilizzare PHP Codesniffer con i progetti Laravel. Questo tutorial sposterà il set di regole che abbiamo creato in un progetto Laravel in un pacchetto Composer personalizzato.
sfondo
Potresti chiedere: “Perché dovrei usare PHPCS quando abbiamo Laravel Pint e PHP CS Fixer?” Piuttosto che pensare a questi strumenti come concorrenti, considerali come strumenti complementari che forniscono ciascuno suggerimenti e correzioni di stile di codice unici e preziosi. PHPCS è un file Lintere PHP-CS-Fixer è un file riformatore.
In effetti, questi tipi di strumenti si sovrappongono: PHP-CS-Fixer ha capacità di controllo con un’estensione --dry-run
caratteristica. PHPCS contiene un file phpcbf
Strumento CLI che corregge automaticamente le violazioni dello sniffer PHPCS. Ma, phpcbf
Non si adatta a tutte le basi disponibili.
Ad esempio, puoi configurare PHPCS per rilevare e segnalare violazioni della lunghezza della riga; Tuttavia, PHPCS non può correggere automaticamente queste violazioni perché lo strumento non può decidere quale metodo si desidera analizzare le righe lunghe:
Lo screenshot mostra la configurazione della lunghezza della riga che avvisa quando una riga supera i 120 caratteri e avvisa sulle righe che superano gli 80 caratteri ma sono ancora entro il limite di 120 caratteri. Questo può essere utile per mantenere la salute del tuo codice e ripulire cose come la lunghezza della riga.
inizio
Avremo bisogno di creare un nuovo pacchetto autore PHP per creare un set personalizzato di regole che puoi riutilizzare in tutti i tuoi progetti. PHPCS ha bisogno di conoscere queste regole, quindi useremo a Programma di installazione del compositore Pacchetto che facilita l’installazione degli standard di codifica tramite Composer.
Prima di arrivare a questo, creiamo un pacchetto e avviamo Git e Composer:
mkdir phpcs
cd phpcs
git init
composer init
Una volta in esecuzione composer init
Composer ti chiederà di definire cose come il nome del tuo pacchetto. Inserisci almeno il nome del pacchetto, facoltativamente una descrizione, e completa le richieste. Richiederemo le dipendenze manualmente, quindi non preoccuparti di installarle in modo interattivo.
Per semplificare il rilevamento degli standard PHPCS dai pacchetti composer, ora dobbiamo installare il pacchetto Composer Installer:
composer require --dev \
dealerdirect/phpcodesniffer-composer-installer
Il programma di installazione di composer richiede inoltre di specificare un file type
proprietà con phpcodesniffer-standard
. Il plug-in Composer Installer ricerca set di regole utilizzando il file type
La proprietà è in tutti i pacchetti Composer installati nel progetto.
Alla tua fine composer.json
Il file dovrebbe essere simile al seguente:
{
"name": "bitpressio/phpcs",
"type": "phpcodesniffer-standard",
"authors": [
{
"name": "Paul Redmond",
"email": "paulrredmond@gmail.com"
}
],
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^1.0"
},
"config": {
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
}
}
Abbiamo tutto ciò di cui abbiamo bisogno per definire il nostro pacchetto Composer e tutto ciò che dobbiamo fare per farlo funzionare è definire il nostro insieme di regole.
Definisci le regole
Il nostro pacchetto Composer conterrà: ruleset.xml
Il file che installeremo in tutti i nostri progetti. Ho chiamato il mio set di regole Bitpress
quindi ho bisogno di creare una cartella nel mio progetto che contenga il set di regole:
mkdir Bitpress
touch Bitpress/ruleset.xml
Abbiamo creato il set di regole nella prima parte di questa serie, quindi aggiungi il seguente contenuto al tuo ruleset.xml
per sostituire i valori per qualsiasi cosa tu chiami il tuo set di regole:
<?xml version="1.0"?>
<!-- @see https://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php -->
<ruleset name="Bitpress PHPCS Rules">
<description>PHPCS ruleset for Bitpress</description>
<!-- Use colors in output -->
<arg name="colors"/>
<!-- Show progress of the run -->
<arg value="p"/>
<!-- Show sniff codes in all reports -->
<arg value="s"/>
<!-- Our base rule: set to PSR12 -->
<rule ref="PSR12">
<exclude name="PSR12.Traits.UseDeclaration.MultipleImport" />
<exclude name="PSR12.Operators.OperatorSpacing.NoSpaceBefore" />
<exclude name="PSR12.Operators.OperatorSpacing.NoSpaceAfter" />
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="80"/>
<property name="absoluteLineLimit" value="120"/>
</properties>
</rule>
<rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
<exclude-pattern>tests/</exclude-pattern>
</rule>
<exclude-pattern>*/.phpstorm.meta.php</exclude-pattern>
<exclude-pattern>*/_ide_helper.php</exclude-pattern>
<exclude-pattern>*/*.blade.php</exclude-pattern>
<exclude-pattern>*/autoload.php</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
</ruleset>
Il nostro set di regole non includerà sniff personalizzati, ma selezioneremo la nostra impostazione preferita in base a ciò che è incluso PSR12
insieme di regole.
Abbiamo tutto ciò di cui abbiamo bisogno per iniziare con il nostro set di regole personalizzato! Una volta pubblicato il pacchetto Composer, puoi richiederlo come file --dev
Accreditamento.
Impostare il set di regole nel progetto
Dopo aver pubblicato il tuo pacchetto come pacchetto Composer, puoi installarlo in un progetto in questo modo:
composer require --dev bitpressio/phpcs
IL Programma di installazione del compositore La dipendenza richiederà l’autorizzazione per eseguire il codice in modo che possa rilevare e installare gli standard nei pacchetti Composer. Lui sceglie y
Per abilitare il plug-in:
A questo punto abbiamo installato il nostro set di regole personalizzato e possiamo verificare con il seguente comando:
vendor/bin/phpcs -i
The installed coding standards are
MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend,
Bitpress and VariableAnalysis
IL --show-info
Flag può mostrarci ulteriori informazioni:
vendor/bin/phpcs --config-show
Using config file: /Users/paul/code/sandbox/bitpress-phpcs/vendor/squizlabs/php_codesniffer/CodeSniffer.conf
installed_paths: ../../bitpressio/phpcs,../../sirbrillig/phpcs-variable-analysis
Infine, possiamo rendere il nostro set di regole predefinito con quanto segue:
vendor/bin/phpcs --config-set default_standard Bitpress
Potremmo fare in modo che ogni sviluppatore imposti manualmente le nostre regole come predefinite; Tuttavia, utilizzando composer.json
Possiamo eseguirlo automaticamente con quanto segue:
"scripts": {
"post-package-install": "vendor/bin/phpcs --config-set default_standard Bitpress"
}
Se riavviamo il comando, il nostro insieme di regole dovrebbe ora essere quello predefinito:
vendor/bin/phpcs --config-show
...
default_standard: Bitpress
Abbiamo quasi finito, ma abbiamo alcune modifiche minori che devono essere apportate per completare l’installazione.
Determinare la configurazione del set di regole del progetto
Il nostro set di regole è installato e impostato come predefinito. Tuttavia, se corriamo phpcs
Riceveremo il seguente messaggio:
vendor/bin/phpcs
ERROR: You must supply at least one file or directory to process.
Run "phpcs --help" for usage information
Sebbene il nostro set di regole sia quello predefinito, dobbiamo comunque fornire la configurazione per istruire PHPCS su quali file e cartelle scansionare. Creiamo un file phpcs.xml
Alla radice del progetto:
<?xml version="1.0"?>
<!-- @see https://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php -->
<ruleset name="My App">
<file>app</file>
<file>tests</file>
<rule ref="Bitpress"></rule>
</ruleset>
Se corri phpcs
Nel tuo progetto (l’ho testato in una nuova applicazione Laravel), PHPCS eseguirà la scansione dei file app/
E tests/
Alcuni avvertimenti sulla lunghezza della linea dovrebbero essere eliminati. Sentiti libero di configurare questi percorsi a tuo piacimento.
È contenuto
Nella nostra rapida carrellata di regole PHPCS, abbiamo pubblicato un pacchetto autore che contiene un insieme personalizzato di regole che possiamo condividere all’interno della nostra organizzazione. Se desideri il controllo statico su più progetti, questo approccio dovrebbe essere utile.
“Pluripremiato specialista televisivo. Appassionato di zombi. Impossibile scrivere con i guantoni da boxe. Pioniere di Bacon.”
More Stories
Valve lancia un “sistema di aiuto” per le recensioni degli utenti di Steam
Le creature più antiche e più piccole della Terra sono destinate a diventare le vincitrici del cambiamento climatico – e le conseguenze potrebbero essere disastrose
Il Day To Night Bistro Elio’s Place apre in Flinders Lane