Коллега хочет создать диаграммы классов UML из кучи исходного кода Python. Он в первую очередь интересуется отношениями наследования и слегка интересуется композиционными отношениями, и его мало волнуют атрибуты класса, которые являются просто примитивами Python.
Исходный код довольно прост и не очень злой - например, он не делает никакой волшебной метаклассической магии. (Это в основном со времен Python 1.5.2, с несколькими каплями «современного» 2.3ish материала.)
Какое лучшее существующее решение порекомендовать?
Ответы:
Возможно, вы слышали о Pylint, который помогает статически проверять код Python. Мало кто знает, что он поставляется с инструментом под названием Pyreverse, который рисует UML-диаграммы из кода Python, который он читает. Pyreverse использует graphviz в качестве бэкэнда.
Используется так:
где также
.
может быть один файл.источник
Epydoc - это инструмент для генерации документации API из исходного кода Python. Он также генерирует диаграммы классов UML, используя Graphviz причудливыми способами. Вот пример диаграммы, сгенерированной из исходного кода самого Epydoc.
Поскольку Epydoc выполняет как самоанализ объекта, так и анализ исходного кода, он может собирать больше информации относительно статических анализаторов кода, таких как Doxygen: он может проверять значительное количество динамически генерируемых классов и функций, но также может использовать комментарии или неназначенные строки в качестве источника документации, например для переменных и публичных атрибутов класса.
источник
epydoc
кажется, не в состоянии генерировать графики. Проверьте это сообщение об ошибке .Проверьте этот список из семи инструментов UML для Python
источник
Некоторые классы программ с хорошим поведением могут быть диаграммируемыми, но в общем случае это невозможно сделать. Объекты Python могут быть расширены во время выполнения, и объекты любого типа могут быть назначены любой переменной экземпляра. Чтобы выяснить, на какие классы объект может содержать указатели (состав), потребуется полное понимание поведения программы во время выполнения.
Возможности метакласса Python означают, что рассуждение о структуре наследования также потребует полного понимания поведения программы во время выполнения.
Чтобы доказать, что это невозможно, вы утверждаете, что если бы существовал такой UML-диаграммщик, то вы могли бы взять произвольную программу, преобразовать операторы «halt» в операторы, которые повлияют на UML-диаграмму, и использовать UML-диаграммщик для решения проблемы остановки, что, как мы знаем, невозможно.
источник
Если вы используете Eclipse, возможно, PyUML . Тем не менее, не использовал его.
источник
.zip
архива.Стоит упомянуть Гафора . Инструмент моделирования Python / UML.
источник
Умбрелло тоже так делает. в меню выберите «Код» -> «импортировать проект», а затем укажите корневой каталог вашего проекта. тогда он переворачивает код для тебя ...
источник
vipera - это небольшой дизайнер приложений, в который входит uml. Вы можете увидеть это в:
Vipera
С уважением.
источник
В SPE IDE есть встроенный UML-создатель. Просто откройте файлы в SPE и нажмите на вкладку UML.
Я не знаю, насколько это полно для ваших нужд, но для этого не требуется никаких дополнительных загрузок или конфигураций.
источник
Корпоративный архитектор Sparx выполняет циклическое переключение исходного кода Python. У них есть ограниченное по времени пробное издание.
источник