AccueilActualités informatiqueAnalyse de code statique : PHPStan atteint la version 1.0

Analyse de code statique : PHPStan atteint la version 1.0

La version 1.0 de PHPStan, un outil open source conçu pour l’analyse statique du code en PHP, est maintenant disponible. Le développeur de PHPStan, Ondřej Mirtes, a commencé à travailler sur l’outil d’analyse de code il y a six ans afin de fournir aux développeurs PHP un moyen de tester le code de leur programme pour détecter d’éventuelles erreurs avant la première exécution. Depuis lors, PHPStan a atteint un niveau de maturité qui justifie maintenant une version majeure stable pour une utilisation productive, selon un article de blog sur le site Web du projet.

Sommaire

Toutefois, la version actuelle intègre également de nouvelles fonctions, notamment le mode Level 9 et une analyse try-catch-finally plus précise. Le nouveau mode est destiné à tenir compte de l’évaluation de base selon laquelle l’utilisation de mixed dans le code n’est pas sûr et nécessite donc une action. Le niveau 9 empêche la divulgation de mixed. Si le mode est actif, ce type ne peut pas être passé à un autre type, et il n’est pas possible d’appeler des méthodes avec lui ou d’accéder à ses propriétés.

Les versions précédentes de PHPStan manquaient de précision dans l’inférence de type dans les blocs try-catch-finally. La version 1.0 promet une amélioration significative à cet égard, selon les éditeurs. PHPStan a maintenant une idée plus précise des points de lancement dans le système de gestion de l’eau. try-et les utilise pour informer le moteur d’inférence de type des types possibles dans les blocs de type catch– et finally-blocs. La suite @throws-Plus les développeurs ajoutent des annotations à leurs fonctions et méthodes, plus l’analyse doit être précise.

/** @throws InvalidArgumentException */
function doBar(): int
{
    // ...
}

/** @throws RuntimeException */
function doBaz(): string
{
    // ...
}

try {
    // $foo is surely defined in all catch blocks
    // because the literal 1 doesn't throw anything
    $foo = 1;

    $bar = doBar(); // might throw InvalidArgumentException
    $baz = doBaz(); // might throw RuntimeException
} catch (InvalidArgumentException $e) {
    // $foo is always defined
    // $bar is never defined
    // $baz is never defined
} catch (RuntimeException $e) {
    // $foo is always defined
    // $bar is always defined
    // $baz is never defined
}

Un aperçu des autres innovations de PHPStan 1.0 peut être trouvé dans le blog d’annonce d’Ondřej Mirtes. Une liste complète de toutes les corrections de bogues et améliorations est disponible dans les notes de version sur GitHub. En ce qui concerne le développement futur de l’outil d’analyse statique du code, M. Mirtes envisage de l’adapter à la dernière version 8.1 de PHP.

Lire aussi

Plus d'articles