Nous souhaitons documenter automatiquement le projet au fur et à mesure de son évolution.
La documentation technique doit être générée directement à partir du code source afin de garantir sa cohérence avec l'architecture réelle.
Les diagrammes doivent être exploitables dans :
Mettre à disposition une commande Symfony permettant de générer des diagrammes UML à partir du code source PHP.
La commande doit être conçue de manière extensible afin de supporter :
Nom de la commande :
export:diagram:plantuml
La commande doit permettre :
-f <fichier PHP>
-d <dossier PHP (récursif)>
Les deux options doivent pouvoir être utilisées indépendamment.
-o <dossier de sortie>
Option obligatoire.
Si le dossier n'existe pas :
Si l'option est absente :
Dossier de sortie manquant
et arrêt de la commande.
La commande doit supporter :
--format=puml
--format=svg
--format=png
Formats cumulables :
--format=puml --format=svg
Par défaut :
--format=puml
Les formats svg et png doivent être rendus par un backend PlantUML réel.
Si le CLI PlantUML local n'est pas disponible, la commande doit échouer explicitement pour ces
formats et recommander l'utilisation de --format=puml ou l'installation de PlantUML.
Si PNG n'est pas disponible ou ne produit pas un résultat acceptable :
--format=svg
est considéré comme valide.
Mode par défaut.
Affiche :
Exemple :
DataSourceInterface
├ supports(source: mixed): bool
└ fetch(source: mixed, state: DataTableState): DataTableResult
Mode simplifié destiné à la documentation.
Affiche uniquement :
readonly, final, enum, etc.)Ne doit pas afficher :
Objectif :
Compréhension de l'architecture en moins de 30 secondes.
Exemple :
DataSourceInterface
▲
│
┌─────┴─────────────┐
│ │
ArrayDataSource DoctrineDataSource
La commande doit permettre de générer uniquement une partie du projet.
Exemples :
--component=DataTable
--component=Card
--component=Navbar
Le composant peut correspondre :
La sortie doit contenir uniquement les éléments liés au composant demandé.
Lorsqu'un dossier est fourni :
-d src
La commande doit produire :
Un fichier par classe.
Exemple :
DataTable.puml
DataTableResult.puml
DoctrineDataSource.puml
Un diagramme regroupant :
Exemple :
classes.puml
La conception doit permettre l'ajout futur de nouveaux formats :
Mermaid
Graphviz
C4
Architecture Overview
L'extraction du modèle doit être indépendante du moteur de rendu.
Architecture recommandée :
Extractor
↓
Diagram Model
↓
Renderer
├ PlantUML
├ SVG
├ PNG
└ Future Renderers
Tous les contrôles qualité doivent rester verts :
make phpstan
make lint
detailedarchitectureNe pas implémenter dans cette tâche :
Cette tâche n'a pas pour objectif d'ajouter de nouvelles capacités métier.
Son objectif est de construire une chaîne de génération de documentation technique automatisée à partir du code source afin d'accompagner durablement le projet.
How can I help you explore Laravel packages today?