L’article explique comment analyser un graphe de dépendances d’une application pour y détecter des « communautés », c’est-à-dire des groupes de composants fortement liés entre eux mais peu connectés au reste du système, afin de mieux comprendre et améliorer l’architecture logicielle. Il s’appuie sur des techniques issues de la théorie des graphes, notamment des algorithmes de détection de communautés basés sur l’optimisation de la modularité, qui cherchent à maximiser les liens internes et minimiser les liens externes ([rouviere.pages.math.cnrs.fr][1]). L’objectif est d’identifier des sous-ensembles cohérents (souvent assimilables à des modules ou contextes métiers) et de repérer d’éventuels problèmes de couplage ou de structure dans les dépendances, permettant ainsi de guider le refactoring et d’améliorer la maintenabilité du code.
L'article critique l'approche des outils d'analyse statique qui évaluent le couplage en comptant les dépendances, ce qui peut être trompeur. L'auteur propose une alternative : le modèle de couplage équilibré, qui évalue les dépendances en fonction de leur impact pratique. Ce modèle identifie quatre types de couplage, classés par poids croissant : le couplage contractuel (le plus léger), le couplage modèle, le couplage fonctionnel et le couplage intrusif (le plus lourd). L'idée est de se concentrer sur la nature des dépendances plutôt que sur leur nombre pour améliorer la conception logicielle.
L'article présente une approche rigoureuse pour améliorer la qualité du code PHP en utilisant quatre outils : PHPStan pour l'analyse statique, Rector pour la modernisation automatique du code, PHP-CS-Fixer pour le respect des normes de style, et Biome pour le linting et le formatage du JavaScript. L'auteur partage ses configurations et son workflow, intégrant ces outils dans un processus automatisé via Castor, un task runner. L'objectif est de déléguer la rigueur à des machines pour éviter les erreurs humaines et maintenir un code propre et performant.
Biome est présenté comme un outil révolutionnaire pour les développeurs front-end, remplaçant efficacement ESLint et Prettier. Il combine les fonctionnalités d'un formatter, d'un linter, et d'un analyseur statique en un seul binaire, offrant une solution plus rapide et moins complexe. Biome simplifie la configuration, réduit le besoin de multiples outils, et améliore la cohérence du code. Il est particulièrement apprécié pour sa rapidité et sa facilité d'intégration, notamment dans des projets Symfony via le bundle kocal/biome-js-bundle. Bien qu'il ne couvre pas 100% des cas d'utilisation d'ESLint, il est efficace dans 90% des situations courantes. Biome impose également des conventions strictes pour des pratiques de codage cohérentes, comme l'utilisation de points-virgules et de virgules finales. En résumé, Biome est une solution tout-en-un qui simplifie le développement et améliore la productivité.
L'auteur donne de bons conseils sur divers sujets :
- VCS (commits atomiques, etc.),
- adoption d'un standard de code corrigé / validé par PHPCS Fixer,
- utilisation d'outils d'analyse statique (PHPStan, Psalm) et de "mutation testing" (Infection)
- automatisation du déploiement
- living documentation, notamment avec Gherkin
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Réponse à la question posée dans le titre : oui :)
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Un outil d'analyse statique de code PHP... Il détecte si le code est testable !
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Flow est un outil d'analyse statique de JavaScript, pour détecter les incompatibilités de types au sein du code