Au revoir Scrutinizer, au revoir Qodana, bonjour PHPStan...
Le projet #Dolibarr change son outil d'analyse statique... encore... Que se passe-t-il ❓
Ceci est un bref retour sur les outils d'analyse statique utilisés par le projet Dolibarr.




- À propos de #Scrutinizer :
Il y a quelques mois, le CTI de reporting de la dette technique du projet Dolibarr, basé sur l'analyse statique du code PHP du projet et nommé Scrutinizer, a été rompu en raison d'une limite de 60 mn d'analyse. Le projet Dolibarr est devenu trop important et l'équipe de scrutinizeur n'a pas répondu sur la manière de résoudre ce problème.

- À propos de #Qodana :
Le projet était donc passé à Qodana. Cela a fonctionné 5 mois. Le projet Dolibarr complet a été analysé en 20 mn donc 3 fois plus rapide que Scrutinizer. Désormais, même en utilisant la version localement, Qodana ne fonctionne plus. Une clé de licence est demandée. Le projet n'est pas (ou plus) un logiciel libre (les sources du projet ne contiennent que des images binaires). Je n'ai pas réussi à trouver de vraies sources, donc aucune de chance pour pouvoir résoudre ce problème.
J'ai donc passé une semaine à trouver de meilleures alternatives.

- Nous avons échoué avec #Exakat (toute la documentation sur le processus d'installation local semble obsolète, aucun moyen de le faire fonctionner).

- #PHPStan, la solution
Finalement, nous avons trouvé une bonne solution avec PHPStan. J'ai mis à jour les fichiers dans htdocs/build/phpstan dans les sources officielles du projet Dolibarr pour expliquer comment il est facile d'exécuter l'outil d'analyse statique phpstan à partir de la ligne de commande, fournissant un fichier de chargement automatique afin que l'environnement et les variables globales puissent être connus par l'analyseur, réduisant ainsi les faux positifs. Le programme peut analyser le million de lignes de code de Dolibarr en seulement 5 minutes, avec 3 Go de mémoire, et il n'y a besoin que d'un seul outil de ligne de commande pour cela ! Problème : Les rapports sont des brutes (texte uniquement, pas de rapport HTML par défaut). Mais cela ne nous dérange pas : nous avons le bon résultat, il fait le travail sans plus besoin d'une plateforme SaaS et nous avons une vue de tous nos points restants dans notre dette technique (du moins celui que nous pouvons détecter avec analyse statique).
Alors désormais, comme nous l'avions fait par le passé pour la documentation doxygen, le rapport de dette technique est générée par un cron sur le serveur de la fondation Dolibarr.
Pour pouvoir mettre le rapport en ligne au format HTML, un tout petit outil CLI a été développé. Il s’appelle Advanced Project Statistics (vous vous souvenez d’Advanced Wed Statistics ? J’ai commencé ce projet de la même manière il y a 20 ans, pour la même raison ;-).
Le résultat est disponible quotidiennement sur cette page https://doxygen.dolibarr.org/apstats/
Pas encore aussi sexy que l’outil précédent, mais il fonctionne, est facile à utiliser, sans frais.

Merci à l'équipe Phpstan...





 
September 20, 2023
Laurent Destailleur - Aka Eldy