Kolega chce wygenerować diagramy klas UML ze stosów kodu źródłowego Pythona. Interesuje się przede wszystkim relacjami dziedziczenia, a łagodnie interesuje się relacjami kompozycyjnymi i nie dba o atrybuty klas, które są po prostu prymitywami Pythona.
Kod źródłowy jest dość prosty i nie jest niesamowicie zły - na przykład nie robi żadnej magicznej metaklasy. (To głównie z czasów Pythona 1.5.2, z kilkoma „nowoczesnymi” 2.3ishowymi rzeczami.)
Jakie najlepsze istniejące rozwiązanie polecić?
Odpowiedzi:
Być może słyszałeś o Pylint, który pomaga statycznie sprawdzać kod Pythona. Mało kto wie, że jest wyposażony w narzędzie o nazwie Pyreverse, które rysuje diagramy UML z czytanego kodu python. Pyreverse używa graphviz jako backendu.
źródło
Epydoc to narzędzie do generowania dokumentacji API z kodu źródłowego Python. Generuje również diagramy klas UML, używając Graphviz w fantazyjny sposób. Oto przykład diagramu wygenerowanego z kodu źródłowego samego Epydoc.
Ponieważ Epydoc wykonuje zarówno introspekcję obiektu, jak i parsowanie źródła, może gromadzić więcej informacji dotyczących analizatorów kodu statycznego, takich jak Doxygen: może sprawdzać spore ilości dynamicznie generowanych klas i funkcji, ale może także wykorzystywać komentarze lub nieprzypisane ciągi jako źródło dokumentacji, np. dla zmiennych i publicznych atrybutów klasy.
źródło
epydoc
wydaje się , że nie można wygenerować wykresów. Sprawdź ten raport o błędach .Sprawdź listę siedmiu narzędzi Uml dla Pythona
źródło
Niektóre klasy dobrze zachowujących się programów mogą być schematyczne, ale w ogólnym przypadku nie można tego zrobić. Obiekty Pythona mogą być rozszerzane w czasie wykonywania, a obiekty dowolnego typu można przypisywać do dowolnej zmiennej instancji. Ustalenie, do jakich klas obiekt może zawierać wskaźniki (skład), wymagałoby pełnego zrozumienia działania programu w czasie wykonywania.
Możliwości metaklasy Pythona oznaczają, że rozumowanie dotyczące struktury dziedziczenia wymagałoby również pełnego zrozumienia zachowania programu w czasie wykonywania.
Aby udowodnić, że jest to niemożliwe, argumentujesz, że gdyby istniał taki diagrammator UML, możesz wziąć dowolny program, przekonwertować instrukcje „halt” na instrukcje, które miałyby wpływ na diagram UML, i użyć diagrammera UML do rozwiązania problemu zatrzymania, co jak wiemy jest niemożliwe.
źródło
Jeśli używasz zaćmienia, być może PyUML . Jednak nie użyłem tego.
źródło
.zip
archiwum.Warto wspomnieć o Gaphorze . Narzędzie do modelowania / UML w języku Python.
źródło
Umbrello też to robi. w menu przejdź do Kod -> importuj projekt, a następnie wskaż katalog główny swojego projektu. to odwraca kod dla ciebie ...
źródło
vipera to mały projektant aplikacji, w tym uml. Możesz to zobaczyć w:
Vipera
Z poważaniem.
źródło
SPE IDE ma wbudowane UML twórcy. Wystarczy otworzyć pliki w SPE i kliknąć kartę UML.
Nie wiem, jak wyczerpujący jest dla twoich potrzeb, ale nie wymaga żadnych dodatkowych pobrań ani konfiguracji do użycia.
źródło
Architekt korporacyjny Sparx wykonuje tripping tripping źródła Python. Mają ograniczoną czasowo wersję próbną.
źródło