Marzo 20, 2023

Conca Ternana Oggi

Ultime notizie e rapporti economici sull'Italia.

Condividi le regole PHPCS tra progetti e team

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.

READ  Alder Lake di Intel combina core CPU "prestazioni" ed "efficienza" su un singolo chip

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 initComposer 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 Bitpressquindi 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.xmlper 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.

READ  L'utente Reddit ordina una PlayStation 5 e riceve invece un sacchetto di riso

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.

READ  Il concept mouse XPG ha un SSD in modo da poter memorizzare i tuoi giochi al suo interno

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