Retour au Blog

Symfony Insight ? À quoi ça sert ? Comment le met-on en place ?

Symfony Insight ? À quoi ça sert ? Comment le met-on en place ?

Déjà qu'est ce que SensioLabs Insight ?

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.

Quelles bénéfices en tirer ?

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.
  • Une faille de sécurité peut constituer une menace sérieuse pour votre entreprise. Cela nuit à votre crédibilité et peut même entraîner des fuites de données et des poursuites judiciaires. Symfony Insight vous aide à détecter les vulnérabilités de sécurité avant qu'elles n'atteignent la production et à configurer les outils pour atténuer les failles si elles se produisent.
  • Intérêt Juridique, notamment sur les poursuites, les plaintes RGPD. Les réglementations Internet dans le monde deviennent plus strictes que jamais et le non-respect de ces lois vous expose à des poursuites et à des plaintes légales qui pourraient nuire profondément à votre entreprise. Cette analyse aide à assurer que tous les composants du projet peuvent être utilisés en toute sécurité, tant en termes de propriété intellectuelle que de conformité aux réglementations locales.
  • Éviter les fuites de données et assurer l'intégrité des données. Les fuites de données sont l'un des pires scénarios possibles pour les entreprises. Elles exposent les informations sensibles de vos clients, donnent à vos concurrents une compréhension détaillée du fonctionnement de votre entreprise et nuisent à votre réputation. L'analyse vous avertit du code qui peut être la source de fuites de données au niveau de votre application.
  • Fiabilité, éviter les temps d'arrêt et les bugs majeurs. Les temps d'arrêt et les bugs donnent un sentiment d'instabilité à vos clients. Ils développeront une peur envers votre produit et lorsque cette peur deviendra trop forte, ils utiliseront votre concurrent à la place. Éviter les temps d'arrêt est essentiel pour votre entreprise à long terme. L'analyse trouve également les sources potentielles de bogues majeurs et de temps d'arrêt et vous alerte pour les empêcher d'atteindre la production.
  • Productivité, éviter une productivité lente et une croissance négative. L'accumulation d'obstacles techniques dans votre projet peut entraîner des itérations plus lentes et diminuer la productivité de votre équipe. Il empêche la publication de nouvelles fonctionnalités et peut même atteindre des niveaux où votre projet doit être entièrement redémarré. SymfonyInsight aide les développeurs à écrire du code standard et sûr dans le temps. Il garantit que votre code n'accumule pas de dette technique et qu'il ne repose pas sur des fonctionnalités instables de vos dépendances.  
  • Réputation, assurez-vous que les problèmes techniques n'ont pas de répercussions négatives sur votre marque. Lorsque des problèmes techniques surviennent, il est essentiel que vous configuriez des outils pour les gérer correctement. Ne pas le faire pourrait nuire à votre réputation et montrer un manque de professionnalisme envers vos clients. SymfonyInsight vous aide à configurer correctement votre projet afin que même si vous rencontrez des problèmes techniques en production, ceux-ci soient correctement gérés. 

Comment le met-on en place ?

Préparer le projet

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.

Aperçu SensioLabs

Après avoir cliqué sur le bouton d'analyse, SensioLabs Insight commencera immédiatement à rechercher les défauts de votre application.

Analyse du projet

Jetons un coup d'œil à une analyse.             

Aperçu SensioLabs

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.

           

Aperçu SensioLabs

           

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.

           

Aperçu SensioLabs

           

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.

Configuration

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.

Quelques défauts

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.

Conclusion

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.

Existe-t-il des alternatives à Symfony Insights ?

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 !

Contactez-nous !
Je veux en savoir plus !