« Programmation PHP/Concevoir du code de haute qualité » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 345 :
=== phpcs ===
PHP_CodeSniffer liste ou corrige les violations des normes de codage<ref>https://github.com/squizlabs/PHP_CodeSniffer</ref><ref>http://pear.php.net/package/PHP_CodeSniffer/redirected</ref>.
 
==== Installation ====
composer require squizlabs/php_codesniffer --dev
 
==== Lancement ====
vendor/bin/phpcs
 
==== Configuration ====
* phpcs : liste les mauvaises pratiques.
* phpcbf : corrige celles qui le sont automatiquement.
Ligne 352 ⟶ 358 :
 
=== phpmd ===
PHP Mess Detector recense les mauvaises pratiques du type "code mort", mauvais nommage, etc.<ref>https://github.com/phpmd/phpmd</ref> :.
 
==== Installation ====
composer require phpmd/phpmd --dev
 
==== Lancement ====
vendor/bin/phpmd src ansi rulesets.xml
 
==== Configuration ====
Comme CodeSniffer, il utilise ruleset.xml pour lister les checks à inclure ou exclure. De plus, pour exclure une classe d'une analyse, on peut placer le nom de l'analyse dans une annotation de la classe. Ex :
@SuppressWarnings(PHPMD.CyclomaticComplexity)
 
 
=== phpstan ===
PHP Static Analysis détecte des erreurs potentielles à l'exécution (ex : mauvais type) sans réellement exécuter le code<ref>https://github.com/phpstan/phpstan</ref>.
 
==== Installation ====
composer require phpstan/phpstan --dev
 
==== Lancement ====
vendor/bin/phpstan analyse --no-progress --memory-limit=256M
 
==== Configuration ====
Pour ignorer une erreur sur un élément, il y a trois solutions :
* utiliser une annotation sur la ligne précédente :
Ligne 394 ⟶ 412 :
=== psalm ===
Psalm cherche à détecter des bugs, par exemple des erreurs de type<ref>https://psalm.dev/docs/</ref>.
 
==== Installation ====
composer require --dev vimeo/psalm
 
==== Lancement ====
vendor/bin/psalm
 
=== Makefile d'analyse ===
Pour éviter de retenir toutes ces commandes, on peut les inclure dans un Makefile.
 
Exemple sur Symfony :
<syntaxhighlight lang=make>
all: lint cs-check phpstan-check phpmetrics phpmd psalm
 
lint:
bin/console lint:container
bin/console lint:twig templates
bin/console lint:yaml config
 
cs-fix:
vendor/bin/phpcbf --standard=PSR12 --ignore=Migrations src/
 
cs-check:
vendor/bin/phpcs --standard=PSR12 --ignore=Migrations src/
 
phpstan:
vendor/bin/phpstan analyse
 
phpstan-check:
vendor/bin/phpstan analyse --no-progress --memory-limit=256M
 
phpmetrics:
vendor/bin/phpmetrics --report-html=reports/phpmetrics-$$(date '+%Y%m%d_%H%M%S').html src
 
phpmd:
vendor/bin/phpmd src ansi rulesets.xml
 
phpmd-report:
vendor/bin/phpmd src html rulesets.xml --reportfile reports/phpmd-$$(date '+%Y%m%d_%H%M%S').html
 
psalm:
vendor/bin/psalm
</syntaxhighlight>
 
== Références ==