Каков наилучший способ генерации UML-диаграммы из исходного кода Python?

Коллега хочет генерировать диаграммы классов UML из кучи исходного кода Python. Он в первую очередь интересовался отношениями наследования и мягко интересовался композиционными отношениями, и он не очень заботится о атрибутах класса, которые являются просто примитивами Python.

Исходный код довольно прост, а не ужасно злой - например, он не притворяется волшебным метаклассом. (Это в основном из дней Python 1.5.2, с некоторыми sprinklings "современных" 2.3ish вещей.)

Какое лучшее существующее решение рекомендуется?

Ответ 1

Epydoc - это инструмент для создания документации API из исходного кода Python. Он также генерирует диаграммы классов UML, используя Graphviz. Вот пример диаграммы, сгенерированный из исходного кода самого Epydoc.

Поскольку Epydoc выполняет как интроспекцию объектов, так и исходный синтаксический анализ, он может собрать больше информации относительно статических анализаторов кода, таких как Doxygen: он может проверять справедливое количество динамически генерируемых классов и функций, но также может использовать комментарии или неназначенные строки в качестве документации источник, например для переменных и общедоступных атрибутов класса.

Ответ 2

Возможно, вы слышали о Pylint, который помогает статически проверять код Python. Мало кто знает, что он поставляется с инструментом под названием Pyreverse, который рисует диаграммы UML из кода Python, который он читает. Pyreverse использует graphviz как бэкэнд.

Ответ 4

Некоторые классы хорошо управляемых программ могут быть схематичными, но в общем случае это невозможно. Объекты Python могут быть расширены во время выполнения, а объекты любого типа могут быть назначены любой переменной экземпляра. Выяснение того, какие классы объект может содержать указатели на (состав), потребует полного понимания поведения во время выполнения программы.

Возможности метакласса Python означают, что рассуждение о структуре наследования также потребует полного понимания поведения во время выполнения программы.

Чтобы доказать, что это невозможно, вы утверждаете, что если бы такой диаграмм UML существовал, вы могли бы взять произвольную программу, преобразовать операторы "halt" в операторы, которые повлияли бы на диаграмму UML, и использовать диаграмму UML для решения проблема остановки, которая, как мы знаем, невозможна.

Ответ 5

Если вы используете eclipse, возможно PyUML. Однако не использовали его.

Ответ 6

Следует упомянуть Gaphor. Инструмент моделирования Python/UML.

Ответ 7

SPE IDE имеет встроенный создатель UML. Просто откройте файлы в SPE и щелкните вкладку UML.

Я не знаю, насколько он необходим для ваших нужд, но он не требует каких-либо дополнительных загрузок или конфигураций.

Ответ 8

Sparx Enterprise Architect выполняет круговое отключение источника Python. У них есть бесплатная пробная версия с ограниченным временем.

Ответ 9

Umbrello тоже это делает. в меню перейдите в Code- > import project, а затем укажите корневой каталог вашего проекта. то он меняет код на ya...

Ответ 10

vipera - небольшой разработчик приложений, а uml включен. Вы можете увидеть это в:

vipera

С уважением.