Un colega está buscando generar diagramas de clase UML a partir de montones de código fuente de Python. Está principalmente interesado en las relaciones de herencia, y ligeramente interesado en las relaciones de composición, y no le importan mucho los atributos de clase que son solo primitivas de Python.
El código fuente es bastante sencillo y no es tremendamente malvado, por ejemplo, no hace magia de metaclase elegante. (Es sobre todo de los días de Python 1.5.2, con algunas salpicaduras de material "moderno" 2.3ish).
¿Cuál es la mejor solución existente para recomendar?
Respuestas:
Es posible que haya oído hablar de Pylint que ayuda a verificar estáticamente el código de Python. Pocas personas saben que viene con una herramienta llamada Pyreverse que dibuja diagramas UML del código de Python que lee. Pyreverse usa graphviz como backend.
Se usa así:
donde
.
también puede ser un solo archivo.fuente
Epydoc es una herramienta para generar documentación API a partir del código fuente de Python. También genera diagramas de clases UML, usando Graphviz de maneras elegantes. Aquí hay un ejemplo de diagrama generado a partir del código fuente del propio Epydoc.
Debido a que Epydoc realiza tanto la introspección de objetos como el análisis de fuentes, puede recopilar más información con respecto a analizadores de código estático como Doxygen: puede inspeccionar una buena cantidad de clases y funciones generadas dinámicamente, pero también puede usar comentarios o cadenas no asignadas como fuente de documentación, por ejemplo para variables y atributos públicos de clase.
fuente
epydoc
parece incapaz de generar gráficos. Mira este informe de error .Consulte esta lista de siete herramientas uml para python
fuente
Ciertas clases de programas con buen comportamiento pueden ser diagramables, pero en el caso general, no se puede hacer. Los objetos de Python se pueden extender en tiempo de ejecución, y los objetos de cualquier tipo se pueden asignar a cualquier variable de instancia. Determinar qué clases puede contener un objeto para punteros (composición) requeriría una comprensión completa del comportamiento en tiempo de ejecución del programa.
Las capacidades de metaclase de Python significan que razonar sobre la estructura de herencia también requeriría una comprensión completa del comportamiento en tiempo de ejecución del programa.
Para demostrar que esto es imposible, usted argumenta que si existiera tal diagramador UML, entonces podría tomar un programa arbitrario, convertir las declaraciones de "alto" en declaraciones que impactarían el diagrama UML y usar el diagramador UML para resolver el problema de detención. que como sabemos es imposible.
fuente
Si usa eclipse, quizás PyUML . Sin embargo, no lo he usado.
fuente
.zip
archivo.Vale la pena mencionar a Gaphor . Una herramienta de modelado / UML de Python.
fuente
Umbrello también hace eso. en el menú, vaya a Código -> importar proyecto y luego apunte al directorio raíz de su proyecto. entonces invierte el código para ti ...
fuente
vipera es un pequeño diseñador de aplicaciones y se incluye uml. Puedes verlo en:
vipera
Atentamente.
fuente
El SPE IDE ha incorporado en UML creador. Simplemente abra los archivos en SPE y haga clic en la pestaña UML.
No sé cuán grande es para sus necesidades, pero no requiere ninguna descarga o configuración adicional para usar.
fuente
Sparx's Enterprise Architect realiza un recorrido de ida y vuelta de la fuente de Python. Tienen una edición de prueba gratuita por tiempo limitado.
fuente