🎨 Herramientas para Generar Diagramas de Código

🐍 Scripts Python Disponibles

📊 generate_flowcharts.py

Genera diagramas básicos de flujo del código:

  • Diagrama de flujo principal

  • Diagrama de clases

  • Diagrama de secuencia

python generate_flowcharts.py

🚀 generate_advanced_diagrams.py

Genera diagramas avanzados con múltiples formatos:

  • Flujo avanzado con estilos

  • Gráfico de llamadas de funciones

  • Diagrama de flujo de datos

  • Diagrama de estados del sistema

  • Archivo Graphviz DOT

python generate_advanced_diagrams.py

📦 install_diagram_deps.py

Instala dependencias necesarias para diagramas:

  • graphviz: Diagramas vectoriales

  • pyflowchart: Diagramas de flujo

  • pydot: Manipulación DOT

  • matplotlib: Gráficos

  • networkx: Análisis de redes

python install_diagram_deps.py

🎯 Tipos de Diagramas Generados

🔄 Diagramas de Flujo

  • Formato: Mermaid Flowchart

  • Contenido: Flujo del programa principal

  • Características: Decisiones, bucles, procesos

  • Archivo: docs/diagramas_codigo/flujo_principal.md

🏗️ Diagramas de Clases

  • Formato: Mermaid Class Diagram

  • Contenido: Estructura de clases y relaciones

  • Características: Atributos, métodos, herencia

  • Archivo: docs/diagramas_codigo/diagrama_clases.md

⏱️ Diagramas de Secuencia

  • Formato: Mermaid Sequence Diagram

  • Contenido: Interacción entre componentes

  • Características: Mensajes, temporización

  • Archivo: docs/diagramas_codigo/diagrama_secuencia.md

📞 Gráficos de Llamadas

  • Formato: Mermaid Graph

  • Contenido: Dependencias entre funciones

  • Características: Subgráficos por módulo

  • Archivo: docs/diagramas_avanzados/llamadas_funciones.md

📊 Diagramas de Flujo de Datos

  • Formato: Mermaid Graph

  • Contenido: Flujo de datos entre componentes

  • Características: Entrada, procesamiento, salida

  • Archivo: docs/diagramas_avanzados/flujo_datos.md

🎯 Diagramas de Estados

  • Formato: Mermaid State Diagram

  • Contenido: Estados del sistema

  • Características: Transiciones, eventos

  • Archivo: docs/diagramas_avanzados/estados_sistema.md

🛠️ Herramientas Externas

📈 Mermaid

  • Sitio: https://mermaid-js.github.io/mermaid/

  • Editor: https://mermaid.live/

  • Integración: GitHub, GitLab, Sphinx

  • Formato: Markdown con bloques de código

🎨 Graphviz

  • Sitio: https://graphviz.org/

  • Formato: DOT language

  • Salida: PNG, SVG, PDF

  • Comando: dot -Tpng archivo.dot -o salida.png

📊 PyFlowchart

  • Documentación: https://github.com/cdfmlr/pyflowchart

  • Uso: Convierte código Python a diagramas

  • Formato: Mermaid, DOT

  • Instalación: pip install pyflowchart

🔍 NetworkX

  • Documentación: https://networkx.org/

  • Uso: Análisis de redes y grafos

  • Visualización: Matplotlib

  • Instalación: pip install networkx

📋 Comandos Útiles

🔧 Instalar Dependencias

# Instalar todas las dependencias
python install_diagram_deps.py

# Instalar manualmente
pip install graphviz pyflowchart pydot matplotlib networkx

📊 Generar Diagramas

# Diagramas básicos
python generate_flowcharts.py

# Diagramas avanzados
python generate_advanced_diagrams.py

# Ambos
python generate_flowcharts.py && python generate_advanced_diagrams.py

🎨 Convertir Formatos

# DOT a PNG
dot -Tpng docs/diagramas_avanzados/graphviz.dot -o diagrama.png

# DOT a SVG
dot -Tsvg docs/diagramas_avanzados/graphviz.dot -o diagrama.svg

# DOT a PDF
dot -Tpdf docs/diagramas_avanzados/graphviz.dot -o diagrama.pdf

📖 Regenerar Documentación

# Generar HTML
sphinx-build -b html docs docs/_build/html

# Servir localmente
python -m http.server 8000 --directory docs/_build/html

🎯 Casos de Uso

🔍 Análisis de Código

  • Identificar funciones principales

  • Mapear dependencias entre módulos

  • Visualizar flujo de datos

  • Detectar complejidad ciclomática

📚 Documentación

  • Explicar arquitectura del sistema

  • Mostrar interacciones entre componentes

  • Ilustrar flujos de trabajo

  • Documentar estados del sistema

🛠️ Mantenimiento

  • Identificar puntos de fallo

  • Optimizar rutas críticas

  • Refactorizar código complejo

  • Planificar mejoras futuras

🚀 Integración con Sphinx

📄 Configuración

# conf.py
extensions = [
    'sphinx.ext.autodoc',
    'myst_parser',
    'sphinx_mermaid',  # Si está disponible
]

📝 Uso en Documentación

# En archivos .md

```mermaid
flowchart TD
    A[Inicio] --> B[Proceso]
    B --> C[Fin]
```

En archivos .rst

.. mermaid::

flowchart TD A[Inicio] –> B[Proceso] B –> C[Fin]


## 🎉 **Ventajas de esta Aproximación**

### ✅ **Automático**
- **Generación automática** desde código fuente
- **Actualización automática** al cambiar código
- **Consistencia** entre código y documentación

### ✅ **Múltiples Formatos**
- **Mermaid**: Para web y documentación
- **Graphviz**: Para publicaciones
- **PNG/SVG**: Para presentaciones
- **PDF**: Para impresión

### ✅ **Integrado**
- **Sphinx**: Documentación técnica
- **GitHub**: Visualización automática
- **GitLab**: Soporte nativo
- **Markdown**: Compatibilidad universal

---

*Herramientas para generar diagramas de código automáticamente desde Python* 🐍✨