Sortie de PHPStan 1.0, un analyseur statique pour le code PHP.

Après six ans de développement, la première version stable de l'analyseur statique PHPStan 1.0 a été publiée, permettant de détecter des erreurs dans le code PHP sans exécution ni utilisation de tests unitaires. Le code du projet est écrit en PHP et est distribué sous licence MIT.

L'analyseur propose 10 niveaux de vérification, chaque niveau suivant élargissant les capacités du précédent et offrant des contrôles plus stricts :

  • Vérifications de base, identification des classes, fonctions et méthodes inconnues ($this), des variables indéfinies, ainsi que des erreurs dans le nombre d'arguments transmis.
  • Identification des variables probablement indéfinies, des magic methods inconnus et des propriétés de classes avec __call et __get.
  • Identification des méthodes inconnues dans toutes les expressions, sans se limiter à l'appel via $this. Vérification des PHPDocs.
  • Vérification des types de retour et de l'assignation des types aux propriétés.
  • Identification de base du code « mort » (jamais appelé). Identification des appels instanceof qui renvoient toujours false, des blocs « else » qui ne s'exécutent jamais et du code situé après return.
  • Vérification des types des arguments passés aux méthodes et fonctions.
  • Avertissement sur l'absence d'annotations contenant des informations sur les types.
  • Avertissement concernant les types d'union incorrects, définissant des collections de deux types ou plus.
  • Avertissement sur les appels de méthodes et l'accès aux propriétés ayant des types « nullable ».
  • Vérification de l'utilisation du type « mixed ».

    Exemples de problèmes de base détectés :

    • Existence de classes utilisées dans instanceof, catch, typehints et autres constructions du langage.
    • Existence et accessibilité des méthodes et fonctions appelées, ainsi que du nombre d'arguments transmis.
    • Vérification du retour de données par la méthode du même type que celui spécifié dans l'expression return.
    • Existence et visibilité des propriétés appelées, ainsi que vérification des types déclarés et réels des données utilisées dans les propriétés.
    • Validité du nombre de paramètres passés aux appels sprintf/printf dans le bloc de formatage des chaînes.
    • Existence de variables en tenant compte des blocs formés par des opérateurs de branchement et des boucles.
    • Conversions de types inutiles (par exemple, « (string) 'foo' ») et vérifications strictes (« === » et « !== ») des données avec des types et des opérandes différents, renvoyant toujours false.

    Les principales nouveautés de PHPStan 1.0 :

    • Un niveau de vérification « 9 » a été mis en place, effectuant des vérifications sur l'utilisation du type « mixed », destiné à organiser l'acceptation des parameters de différents types par la fonction. Le neuvième niveau identifie des usages non sécurisés du « mixed », tels que le passage de valeurs de type « mixed » à un autre type, l'appel de méthodes avec un type « mixed » et l'accès à ses propriétés, car celles-ci peuvent ne pas exister.
    • Gestion de la vérification de l'identité des valeurs de retour pour des appels de fonctions identiques en utilisant les annotations @phpstan-pure et @phpstan-impure.
    • Analyse des types dans les constructions try-catch-finally utilisant les annotations @throws.
    • Identification de certaines propriétés, méthodes et constantes internes (privées) définies mais non utilisées.
    • Transmission d'appels de rappels incompatibles dans les fonctions de traitement des tableaux, telles que array_map et usort.
    • Inspection des types pour les annotations typehint manquantes.
    • La compatibilité des descriptions de types avec PHPDocs est assurée, permettant d'utiliser dans PHPDocs les types des messages d'erreur.

    Source : opennet.ru

  • Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster