PHPStan
PHPStan
-
Outil d'analyse statique du code PHP
PHPStan
-
Outil d'analyse statique du code PHP
-
Sert à détecter du code ambigu ou erroné
PHPStan
-
Outil d'analyse statique du code PHP
-
Sert à détecter du code ambigu ou erroné
-
Permets d'éviter beaucoup d'erreurs
Comment ça marche
- Installé sur erp-ws et lpv-core
Comment ça marche
- Installé sur erp-ws et lpv-core
make phpstan / task phpstan
Comment ça marche
- Installé sur erp-ws et lpv-core
make phpstan / task phpstan
make baseline
Concrètement
------ ---------------------------------------------------------------------------------------------------------------------
Line src/Utils/MoteurRemplissageLogger.php
------ ---------------------------------------------------------------------------------------------------------------------
16 Property App\Utils\MoteurRemplissageLogger::$logs type has no value type specified in iterable type array.
💡 See: https://phpstan.org/blog/solving-phpstan-no-value-type-specified-in-iterable-type
35 Method App\Utils\MoteurRemplissageLogger::add() has no return type specified.
35 Method App\Utils\MoteurRemplissageLogger::add() has parameter $message with no type specified.
35 Method App\Utils\MoteurRemplissageLogger::add() has parameter $title with no type specified.
35 Method App\Utils\MoteurRemplissageLogger::add() has parameter $type with no type specified.
35 Method App\Utils\MoteurRemplissageLogger::add() has parameter $zone with no type specified.
52 Method App\Utils\MoteurRemplissageLogger::danger() has no return type specified.
52 Method App\Utils\MoteurRemplissageLogger::danger() has parameter $message with no type specified.
52 Method App\Utils\MoteurRemplissageLogger::danger() has parameter $title with no type specified.
52 Method App\Utils\MoteurRemplissageLogger::danger() has parameter $zone with no type specified.
64 Method App\Utils\MoteurRemplissageLogger::info() has no return type specified.
64 Method App\Utils\MoteurRemplissageLogger::info() has parameter $message with no type specified.
64 Method App\Utils\MoteurRemplissageLogger::info() has parameter $title with no type specified.
64 Method App\Utils\MoteurRemplissageLogger::info() has parameter $zone with no type specified.
76 Method App\Utils\MoteurRemplissageLogger::context() has no return type specified.
76 Method App\Utils\MoteurRemplissageLogger::context() has parameter $message with no type specified.
76 Method App\Utils\MoteurRemplissageLogger::context() has parameter $zone with no type specified.
88 Method App\Utils\MoteurRemplissageLogger::success() has no return type specified.
88 Method App\Utils\MoteurRemplissageLogger::success() has parameter $message with no type specified.
88 Method App\Utils\MoteurRemplissageLogger::success() has parameter $title with no type specified.
88 Method App\Utils\MoteurRemplissageLogger::success() has parameter $zone with no type specified.
96 Method App\Utils\MoteurRemplissageLogger::getLogs() return type has no value type specified in iterable type array.
💡 See: https://phpstan.org/blog/solving-phpstan-no-value-type-specified-in-iterable-type
------ ---------------------------------------------------------------------------------------------------------------------
[ERROR] Found 4065 errors
Concrètement
/**
* Override de add() pour les messages success.
*
* @param $title string le titre
* @param $message string le message
* @param $zone string la zone du message
*/
public function success($title, $message, $zone = null)
{
$this->add('success', $title, $message, $zone);
}
Concrètement
/**
* Override de add() pour les messages success.
*
* @param string $title le titre
* @param string $message le message
* @param ?string $zone la zone du message
*/
public function success(string $title, string $message, ?string $zone = null): void
{
$this->add('success', $title, $message, $zone);
}
Concrètement
------ ---------------------------------------------------------------------------------------------------------
Line src/Model/Service/GestionStock/MoteurRemplissageService.php
------ ---------------------------------------------------------------------------------------------------------
340 Parameter #1 $title of method App\Utils\MoteurRemplissageLogger::success() expects string, mixed given.
------ ---------------------------------------------------------------------------------------------------------
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------
Line src/Utils/MoteurRemplissageLogger.php
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------
Ignored error pattern #^Method App\\Utils\\MoteurRemplissageLogger\:\:getLogs\(\) return type has no value type specified in iterable type array\.$# in path
/usr/src/app/src/Utils/MoteurRemplissageLogger.php was not matched in reported errors.
Ignored error pattern #^Method App\\Utils\\MoteurRemplissageLogger\:\:success\(\) has no return type specified\.$# in path
/usr/src/app/src/Utils/MoteurRemplissageLogger.php was not matched in reported errors.
Ignored error pattern #^Method App\\Utils\\MoteurRemplissageLogger\:\:success\(\) has parameter \$message with no type specified\.$# in path
/usr/src/app/src/Utils/MoteurRemplissageLogger.php was not matched in reported errors.
Ignored error pattern #^Method App\\Utils\\MoteurRemplissageLogger\:\:success\(\) has parameter \$title with no type specified\.$# in path
/usr/src/app/src/Utils/MoteurRemplissageLogger.php was not matched in reported errors.
Ignored error pattern #^Method App\\Utils\\MoteurRemplissageLogger\:\:success\(\) has parameter \$zone with no type specified\.$# in path
/usr/src/app/src/Utils/MoteurRemplissageLogger.php was not matched in reported errors.
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------
[ERROR] Found 6 errors
Concrètement
$child_logger->success(
$zone_to,
"Nouvelle quantité du bac : " . ($bac_from['stock_reel'] - $quantity) . " (création de bac nécessaire)"
);
Actions
- Corriger l'erreur
-
Re-générer la baseline :
make baseline
- Ouvrir un ticket Jira indiquant l'erreur
La baseline
La baseline
- Fichier contenant des erreurs "ignorées"
La baseline
- Fichier contenant des erreurs "ignorées"
- Les erreurs ignorées ne seront pas reportées par PHPStan
La baseline
- Fichier contenant des erreurs "ignorées"
- Les erreurs ignorées ne seront pas reportées par PHPStan
- Une erreur ignorée qui n'existe plus devient une erreur
La baseline
- Fichier contenant des erreurs "ignorées"
- Les erreurs ignorées ne seront pas reportées par PHPStan
- Une erreur ignorée qui n'existe plus devient une erreur
- Générée ou re-generée avec
make baseline
La baseline
parameters:
ignoreErrors:
-
message: "#^Parameter \\#2 \\$config of class
Cake\\\\Error\\\\Middleware\\\\ErrorHandlerMiddleware
constructor expects array, mixed given\\.$#"
count: 1
path: src/Application.php
-
message: "#^Method App\\\\Auth\\\\AuthModeEnum\\:\\:__construct\\(\\)
has parameter \\$fnGetUserFromRequest with no type specified\\.$#"
count: 1
path: src/Auth/AuthModeEnum.php
Intérêt
Intérêt
- Améliorer la qualité du code
Intérêt
- Améliorer la qualité du code
- Rendre le code plus facile à maintenir
Intérêt
- Améliorer la qualité du code
- Rendre le code plus facile à maintenir
- Rendre les déploiements plus "safe"
Questions ?
PHPStan
By François DANGUY - DEV
PHPStan
- 21