Coding Standards
I file che contengono esclusivamente PHP non terminano con ?>.
Per l'indentazione non usare tab ma usare 2 spazi per ogni livello (sia in PHP che in JS che in CSS). I file non devono inoltre contenere whitespace alla fine delle righe e utilizzano line ending Unix \n .
Gli array multilinea terminano con una trailing comma.
I blocchi richiedono sempre le parentesi graffe.
Usare elseif invece di else if.
I nomi delle classi usano UpperCamelCase, metodi, proprietà e variabili utilizzano lowerCamelCase, le costanti sono in UPPER_CASE.
Il DocBlock deve spiegare il significato dell'elemento e, quando necessario, la struttura del dato.
Strumenti automatici
PHPCS
Nella root del progetto creare il file phpcs.xml.dist:
<?xml version="1.0"?>
<ruleset name="Project">
<description>
Coding standards for the Drupal project.
</description>
<file>web/modules/custom</file>
<arg name="extensions"
value="php,module,inc,install,yml"/>
<rule ref="Drupal"/>
<rule ref="DrupalPractice"/>
</ruleset>
Poi eseguire vendor/bin/phpcs
PHPCBF
PHPStan
Installare con Composer:
composer require --dev \
phpstan/phpstan \
phpstan/extension-installer \
mglaman/phpstan-drupal \
phpstan/phpstan-deprecation-rules
Nella root del progetto creare il file phpstan.neon e poi eseguire vendor/bin/phpstan analyse.
ESLint
Stylelint
Modulo Coder
Installare il modulo come dipendenza di sviluppo composer require --dev drupal/coder.
Debugging
Se il modulo core Database Logging è abilitato si possono consultare i log alla pagina /admin/reports/dblog opure con Drush:
drush watchdog:show \
--severity-min=Warning \
--count=20
oppure
drush watchdog:show \
--type=php \
--extended
In locale si può impostare il livello di verbosità dei log alla pagina /admin/config/development/logging, oppure tramite Drush:
drush config:set \
system.logging \
error_level \
verbose \
-y
Oppure in sites/default/settings.local.php:
$config['system.logging']['error_level'] = 'verbose';
Modulo Devel
Installare con Composer composer require --dev drupal/devel.
XDebug
Status Report
Nella pagina /admin/reports/status è possibile visualizzare informazioni come su eventuali problemi correnti.