Hướng dẫn generate class diagram from python code - tạo sơ đồ lớp từ mã python

Một đồng nghiệp đang tìm cách tạo sơ đồ lớp UML từ đống mã nguồn Python. Anh ta chủ yếu quan tâm đến các mối quan hệ thừa kế và quan tâm nhẹ vào các mối quan hệ sáng tác và không quan tâm nhiều đến các thuộc tính lớp chỉ là những người nguyên thủy Python.

Mã nguồn khá đơn giản và không cực kỳ xấu xa-nó không làm bất kỳ phép thuật nào của Metaclass ưa thích. (Nó chủ yếu là từ thời của Python 1.5.2, với một số rắc của những thứ "hiện đại" 2.3ish.)

Giải pháp tốt nhất hiện có để đề xuất là gì?

Hướng dẫn generate class diagram from python code - tạo sơ đồ lớp từ mã python

Đã hỏi ngày 3 tháng 11 năm 2008 lúc 22:08Nov 3, 2008 at 22:08

9

Bạn có thể đã nghe nói về pylint giúp kiểm tra tĩnh mã Python. Rất ít người biết rằng nó đi kèm với một công cụ có tên Pyreverse vẽ sơ đồ UML từ mã Python mà nó đọc. Pyreverse sử dụng graphviz làm phụ trợ.

Nó được sử dụng như thế này:

pyreverse -o png -p yourpackage .

trong đó . cũng có thể là một tệp duy nhất.

Hướng dẫn generate class diagram from python code - tạo sơ đồ lớp từ mã python

bad_coder

9.84420 Huy hiệu vàng40 Huy hiệu bạc64 Huy hiệu đồng20 gold badges40 silver badges64 bronze badges

Đã trả lời ngày 26 tháng 9 năm 2011 lúc 11:36Sep 26, 2011 at 11:36

Nicolas Chauvatnicolas ChauvatNicolas Chauvat

2.1731 Huy hiệu vàng12 Huy hiệu bạc2 Huy hiệu đồng1 gold badge12 silver badges2 bronze badges

8

EPYDOC là một công cụ để tạo tài liệu API từ mã nguồn Python. Nó cũng tạo ra các sơ đồ lớp UML, sử dụng graphviz theo những cách ưa thích. Dưới đây là một ví dụ về sơ đồ được tạo từ mã nguồn của chính Epydoc.

Bởi vì Epydoc thực hiện cả hướng nội đối tượng và phân tích nguồn, nó có thể thu thập nhiều thông tin hơn đối với các máy phân tích mã tĩnh như Doxygen: nó có thể kiểm tra một lượng lớn các lớp và chức năng được tạo động, nhưng cũng có thể sử dụng các nhận xét hoặc chuỗi không được chỉ định làm nguồn tài liệu, ví dụ: Đối với các biến và các thuộc tính công khai lớp.

Đã trả lời ngày 3 tháng 11 năm 2008 lúc 23:26Nov 3, 2008 at 23:26

Piropiropiro

Huy hiệu vàng 13K534 Huy hiệu bạc36 Huy hiệu đồng5 gold badges34 silver badges36 bronze badges

7

Đã trả lời ngày 7 tháng 7 năm 2011 lúc 19:51Jul 7, 2011 at 19:51

Hướng dẫn generate class diagram from python code - tạo sơ đồ lớp từ mã python

Jordi Cabotjordi CabotJordi Cabot

7.8002 huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu đồng2 gold badges31 silver badges39 bronze badges

1

Một số lớp của các chương trình được cư xử tốt có thể có thể được sơ đồ, nhưng trong trường hợp chung, nó không thể được thực hiện. Các đối tượng Python có thể được mở rộng tại thời gian chạy và các đối tượng thuộc bất kỳ loại nào cũng có thể được gán cho bất kỳ biến thể hiện nào. Tìm hiểu những gì mà các lớp mà một đối tượng có thể chứa các con trỏ đến (bố cục) sẽ đòi hỏi sự hiểu biết đầy đủ về hành vi thời gian chạy của chương trình.

Các khả năng của Metaclass của Python có nghĩa là lý luận về cấu trúc kế thừa cũng sẽ đòi hỏi sự hiểu biết đầy đủ về hành vi thời gian chạy của chương trình.

Để chứng minh rằng những điều này là không thể, bạn lập luận rằng nếu một sơ đồ UML như vậy tồn tại, thì bạn có thể thực hiện một chương trình tùy ý, hãy chuyển đổi các câu lệnh "Halt" thành các câu lệnh ảnh hưởng đến sơ đồ UML và sử dụng sơ đồ UML để giải quyết vấn đề tạm dừng, mà như chúng ta biết là không thể.

Đã trả lời ngày 3 tháng 11 năm 2008 lúc 22:19Nov 3, 2008 at 22:19

Andru Luvisiandu luvisiAndru Luvisi

23.8K6 Huy hiệu vàng53 Huy hiệu bạc65 Huy hiệu Đồng6 gold badges53 silver badges65 bronze badges

3

Đó là đáng để đề cập đến Gaphor. Một công cụ mô hình hóa/UML Python.

Ahmed Rezk

3011 Huy hiệu vàng4 Huy hiệu bạc10 Huy hiệu đồng1 gold badge4 silver badges10 bronze badges

Đã trả lời ngày 4 tháng 11 năm 2008 lúc 13:12Nov 4, 2008 at 13:12

Ali Afsharali AfsharAli Afshar

40.2K12 Huy hiệu vàng92 Huy hiệu bạc109 Huy hiệu đồng12 gold badges92 silver badges109 bronze badges

Nếu bạn sử dụng Eclipse, có thể pyuml. Mặc dù vậy, chưa sử dụng nó.

Hướng dẫn generate class diagram from python code - tạo sơ đồ lớp từ mã python

bad_coder

9.84420 Huy hiệu vàng40 Huy hiệu bạc64 Huy hiệu đồng20 gold badges40 silver badges64 bronze badges

Đã trả lời ngày 26 tháng 9 năm 2011 lúc 11:36Nov 3, 2008 at 22:15

Nicolas Chauvatnicolas ChauvatDavid Arcos

2.1731 Huy hiệu vàng12 Huy hiệu bạc2 Huy hiệu đồng5 gold badges30 silver badges39 bronze badges

3

EPYDOC là một công cụ để tạo tài liệu API từ mã nguồn Python. Nó cũng tạo ra các sơ đồ lớp UML, sử dụng graphviz theo những cách ưa thích. Dưới đây là một ví dụ về sơ đồ được tạo từ mã nguồn của chính Epydoc.

Bởi vì Epydoc thực hiện cả hướng nội đối tượng và phân tích nguồn, nó có thể thu thập nhiều thông tin hơn đối với các máy phân tích mã tĩnh như Doxygen: nó có thể kiểm tra một lượng lớn các lớp và chức năng được tạo động, nhưng cũng có thể sử dụng các nhận xét hoặc chuỗi không được chỉ định làm nguồn tài liệu, ví dụ: Đối với các biến và các thuộc tính công khai lớp.

Đã trả lời ngày 3 tháng 11 năm 2008 lúc 23:26

PiropiroDec 9, 2011 at 12:21

Huy hiệu vàng 13K534 Huy hiệu bạc36 Huy hiệu đồngÁngel Luis

Đã trả lời ngày 7 tháng 7 năm 2011 lúc 19:511 silver badge1 bronze badge

Jordi Cabotjordi Cabot

7.8002 huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu đồng

Một số lớp của các chương trình được cư xử tốt có thể có thể được sơ đồ, nhưng trong trường hợp chung, nó không thể được thực hiện. Các đối tượng Python có thể được mở rộng tại thời gian chạy và các đối tượng thuộc bất kỳ loại nào cũng có thể được gán cho bất kỳ biến thể hiện nào. Tìm hiểu những gì mà các lớp mà một đối tượng có thể chứa các con trỏ đến (bố cục) sẽ đòi hỏi sự hiểu biết đầy đủ về hành vi thời gian chạy của chương trình.Nov 4, 2008 at 2:37

Các khả năng của Metaclass của Python có nghĩa là lý luận về cấu trúc kế thừa cũng sẽ đòi hỏi sự hiểu biết đầy đủ về hành vi thời gian chạy của chương trình.crystalattice

Để chứng minh rằng những điều này là không thể, bạn lập luận rằng nếu một sơ đồ UML như vậy tồn tại, thì bạn có thể thực hiện một chương trình tùy ý, hãy chuyển đổi các câu lệnh "Halt" thành các câu lệnh ảnh hưởng đến sơ đồ UML và sử dụng sơ đồ UML để giải quyết vấn đề tạm dừng, mà như chúng ta biết là không thể.11 gold badges41 silver badges56 bronze badges

1

Đã trả lời ngày 3 tháng 11 năm 2008 lúc 22:19

Andru Luvisiandu luvisiNov 4, 2008 at 21:53

23.8K6 Huy hiệu vàng53 Huy hiệu bạc65 Huy hiệu Đồngchimp

Đó là đáng để đề cập đến Gaphor. Một công cụ mô hình hóa/UML Python.9 silver badges14 bronze badges

Ahmed Rezk

3011 Huy hiệu vàng4 Huy hiệu bạc10 Huy hiệu đồngJul 7, 2011 at 6:43

Đã trả lời ngày 4 tháng 11 năm 2008 lúc 13:12Hosane

Ali Afsharali Afshar9 silver badges18 bronze badges

2