Retour sur le forum PHP 2024
Revivez les moments forts du Forum PHP 2024 avec l'AFUP ! Découvrez l'avenir du PHP et les innovations qui feront la différence.
Pour faire court, c'est un outil en ligne d'analyse du code PHP, spécialisé sur Symfony.
Il remonte différents problèmes que peut avoir l'application analysée, ou l'API. Notamment la performance, la sécurité, les failles potentielles, la maintenabilité. Il peut analyser les applications Symfony, laravel, Drupal, les API REST, API SOAP, les sites internets, les sites E-commerce, tout ce qui est codé en PHP.
L'analyse automatisée par cet outil est vue, par les développeurs comme les managers, comme une police d'assurance, puisqu'elle surveille en temps réel l'évolution du code, et remonte les failles, les todos. Et en plus, chaque erreur est expliquée dans le contexte du code de l'application PHP que vous avez poussé, il comprend une documentation complète sur la façon de la corriger.
Il y a même un plugin qui s'intègre de manière transparente dans PHPStorm, dans gitlab-ci.yaml ou en local depuis votre poste, pour évaluer la qualité de votre code.
SymfonyInsight ne se cantonne pas à analyser le code, mais va plus loin. Le moteur d’analyse permet de démarrer les applications et de déceler toutes les erreurs existantes, impossibles à repérer lors d’une analyse statique.
Plus de 100 contrôles de qualité sont réalisés afin de couvrir tous les aspects de l’application, de la sécurité à la performance, en passant par la maintenabilité du site Internet, ou encore sa robustesse et son architecture. De plus SymfonyInsight offre la possibilité de tracer les erreurs et de comprendre leurs origines. SymfonyInisight permet par ailleurs de résoudre efficacement les problèmes de qualité des applications.
En effet, SymfonyInsight fournit une estimation précise du temps nécessaire à la résolution de chaque erreur. Grâce à cette estimation, planifier ses développements futurs et remettre son projet sur les bons rails n’a jamais été aussi simple.
Vous pouvez voir une liste complète de ce qu'ils analysent sur cette page.
En général, les fichiers PHP seront vérifiés, les fichiers XML ou YAML aussi, les risques potentiels dans les fichiers HTML et si votre fichier composer.lock est à jour. Cet outil faisant partie de SensioLabs, il est bien sûr capable de vérifier vos projets Symfony et Silex. Pour ces types de projets, des points de contrôle supplémentaires sont ajoutés dans la configuration. Il est bien évidemment aussi capable de vérifier votre projet Laravel, Drupal ou tout autre projet PHP général.
Il y a beaucoup d’intérêts à faire analyser le code par d'autres outils comme phpcs, phpstan, phunit, behat et tous les autres, mais Insights vient chercher de l’interprétation dans le code. Il va être capable de voir des choses que les autres ne vont pas réussir à détecter. Les rapports seront très détaillés, plus qu'ailleurs. L'idée est que cette analyse se fasse à chaque itération pour garder un œil sur la sécurité, la fiabilité et la maintenabilité de votre application.
L'analyse la plus avancée des projets Symfony selon Sensiolabs.
Après avoir créé votre compte sur Sensiolabs Connect, vous pouvez importer depuis github ou n'importe quel moyen votre projet pour qu'il soit analysé par l'outil.
Si vous travaillez sur un projet open-source, l'utilisation de Sensiolabs est gratuite, et l'analyse sera également publique, mais sinon vous devrez passer à un plan payant SensiolabsInsight pour les analyses, voyez la page "Tarification" de leur page. Après avoir choisi un plan, vous pouvez créer un nouveau projet en fournissant un lien vers votre référentiel git privé ou vers n'importe quel fournisseur comme Github ou Bitbucket.
Après avoir cliqué sur le bouton d'analyse, SensioLabs Insight commencera immédiatement à rechercher les défauts de votre application.
Jetons un coup d'œil à une analyse.
SensioLabs Insight fonctionne avec un système de médailles. En fonction du nombre de problèmes détectés et de leur gravité, vous recevez une certaine médaille. La meilleure médaille que vous puissiez obtenir est une médaille de platine, indiquant que SensioLabs Insight n'a pu détecter aucun problème.
En fonction des problèmes, il essaie également de déterminer la quantité de travail qu'il vous reste pour résoudre les problèmes. Dans ce cas, cela devrait prendre plus de 4 jours pour que tout soit résolu, même si en réalité, il faut compter beaucoup plus.
Passons au plus important : les enjeux. Dans ce cas, la modification d'une ressource se fait via une requête GET. SensioLabs Insight suggère ici de le remplacer par une requête POST, PUT ou DELETE.
Ensuite, vous verrez que SensioLabs a trouvé du code en double et des commentaires TODO. Bien que TODO ne soit pas toujours un problème, cela indique clairement que le nettoyage n'est pas encore optimal.
Ce que vous remarquerez également, c'est que Symfony n'est pas à jour. Apparemment, une version plus ancienne est utilisée dans le composer.lock que la LTS. Dans ce cas un peu ancien, le projet était en 2.3.16 alors que 2.3.17 est disponible.
Vous pouvez également accéder à des détails des problèmes en cliquant dessous, vous aurez accès à un bloc d'information supplémentaires.
SensioLabs Insight indique clairement dans quel fichier et sur quelle ligne se trouve le problème. Vous obtenez également une description plus claire du problème. Dans le cas du framework Symfony obsolète, il y a juste une description.
Si vous travaillez en équipe sur un projet, vous pouvez commenter le problème, ce qui vous permet d'en discuter au sein de votre équipe. En cliquant sur open issue, un nouveau problème s'ouvrira dans votre bug tracker, vous permettant de le signaler à votre équipe. Si vous pensez que l'élément n'est pas un problème, vous pouvez facilement l'ignorer. Notez cependant que vous n'obtiendrez pas de badge platine pour avoir ignoré les problèmes.
SensioLabs Insight peut rechercher beaucoup plus de problèmes dans votre application. Le mieux que vous puissiez faire est de l'essayer vous-même. Cependant, vous avez ici un rapport plus détaillé que j'ai reçu plus tôt, indiquant que ma candidature a de sérieux problèmes à régler.
Vous remarquerez que SensioLabs Insight effectue certaines vérifications que vous connaissez d'autres outils d'assurance qualité. Par exemple, la duplication de code peut également être trouvée par PHPCPD, tandis que les propriétés inutilisées peuvent être trouvées par PHPMD. Je ne sais pas si SensioLabs Insight s'appuie sur ces outils ou les a mis en œuvre eux-mêmes.
Jusqu'à présent, nous avons simplement effectué une analyse de notre projet. À un moment donné, vous voudrez peut-être exclure certains tests, changer de branche ou peut-être utiliser une base de données. Vous êtes en mesure de configurer votre projet afin qu'il réponde à vos critères. En éditant le projet, vous pouvez indiquer la branche à utiliser. Vous disposez également d'un champ spécial dans lequel vous pouvez configurer au format YAML les outils que vous souhaitez réellement exécuter.
Par exemple, il s'agit d'un élément de la configuration que vous pouvez utiliser pour configurer votre projet.
Effectivement, il y a tout de même certaines limitations comme le fait que vous ne pouvez voir que les 5 dernières analyses par exemple.
SensioLabs a eu la générosité de partager avec nous une clé d'essai vous permettant de tester SensioLabs Insight pendant un mois. Mais sinon, vous devez tout de même payer pour les analyses. Donc si l'entreprise dans laquelle vous êtes ne souhaite pas l'offrir, cela peut représenter un certain montant.
Cet outil reste tout de même un super moyen pour les équipes de développeurs d’analyser le code produit, et de vérifier qu'il ne s'empire pas non plus. Surtout si vous êtes vraiment sur le framework Symfony, il est spécialement taillé pour celui ci. Il est aussi très utile pour les autres projets PHP, et il y a bien entendu une partie des erreurs remontées dont nous n'avons pas parlé, nous vous invitons à aller voir leur documentation pour avoir des informations complémentaires.
Bien entendu, cet outil est spécialisé sur la technologie Symfony, il peut aussi analyser n'importe quelle application développée avec PHP.
Mais il existe également des solutions autres que Web, y compris Windows, Linux, les solutions auto-hébergées et Mac. La meilleure alternative est SonarQube, qui est à la fois gratuite et Open Source. D'autres comme Codacy, Source Insight, Blink grep, scrutinizer et Source-Navigator NG proposent des solutions très louables également.
Vous pouvez aussi les mettre dans votre gitlab-ci, les analyses par SonarCube, vous trouverez ici une très bonne documentation.
Vous avez des questions ? Contactez nous !