Les dernières ressources publiées sur Alsacreations.com
PHPStan est un outil d’analyse statique de code PHP assez simple à utiliser.
Si vous développez des petits ou moyens projets, par exemple des sites WordPress cela peut vous aider à augmenter la qualité de votre code et détecter les bugs.
Ainsi PHPStan va :
Le log va ressembler à ceci :
------ ----------------------------------------------------------------------------------
Line wwww/functions.php
------ ----------------------------------------------------------------------------------
:10 Access to an undefined property object::$ID.
:77 Variable $wp_query might not be defined.
:377 Function add_wiki_link() has no return type specified.
:379 Parameter #5 $callback of function add_menu expects callable(): mixed, '' given.
------ ----------------------------------------------------------------------------------
Selon votre niveau de connaissance de PHP, ces retours peuvent sembler obscurs, mais on s'y retrouve vite avec un peu d'entraînement.
D'où vient ce nom ? de PHP Static Analysis !
L’analyse statique consiste à examiner le code source, sans le lancer, pour identifier sur ~10 niveaux (dans le cas de PHPStan) :
Concrètement : variables qui n’existent pas, fonctions déclarées avec 2 arguments mais appelées avec 3, etc.
On peut aussi s’en servir pour s’assurer par avance de la compatibilité avec une version upgradée de PHP.
Encore un outil de plus ? Oui et non : s’il est intégré par défaut dès le début d'un projet et qu’on connaît la commande, cela permet de gagner du temps en repérant/comprenant un bug potentiel durant / à la fin du développement.
Avec composer, c'est assez rapide : composer require --dev phpstan/phpstan
, ce qui l'ajoute aux dépendances de développement dans composer.json
:
"require-dev": {
"phpstan/phpstan": "^1.12"
},
Ainsi on pourra lancer vendor/bin/phpstan analyse public/themes >phpstan.log
et lire les contenus du fichier log.
On peut aussi ajouter un script dans composer.json
:
"scripts": {
"phpstan": "phpstan analyse --memory-limit 1024M >phpstan.log"
}
Ce qui permettra de le lancer plus aisément avec composer phpstan
.
On ajoute un fichier phpstan.neon
qui va contenir des paramètres basiques :
scanDirectories
: permet de prendre connaissance des déclarations PHP existantesscanFiles
: permet de connaître des variables déjà définieslevel
: niveau d'exigeancepaths
: liste des chemins réellement analysésExemple concret pour un projet WordPress
parameters:
scanDirectories:
- public/wordpress
- public/plugins
- public/mu-plugins
scanFiles: # permet de connaître des variables custom
- public/wp-config.php
level: max
paths:
- public/themes
On pourra aussi ajouter des règles à ignorer (les plus inoffensives évidemment) lorsqu'on le nombre de lignes relevées est trop important et qu'on ne peut pas tout ré-adapter dans un framework qui ne satisferait pas pleinement PHPStan.
ignoreErrors:
- '#Cannot access offset .*#'
- '#Cannot access property .*#'
- '#Parameter .* of echo cannot be converted to string#'
- '#Parameter .* function .* expects .* mixed given#'
- '#While loop condition is always true#'
- '#code above always terminates#'
Ce n'est pas le seul de sa catégorie, il existe aussi
Pas mal non ?