điều này có thể thú vị khi xem xét, nhưng trong trường hợp này, tôi nghĩ sẽ tốt hơn nếu để pyreverse xây dựng tệp hình ảnh cho tôi để tôi có thể đưa nó vào đây
class SampleCase[object]: def __init__[self]: return
args = shlex.split['-o png -p example explore_pyreverse.py'] #Run[args]
Điều này thực sự hóa ra không hoạt động. Mặc dù hàm run_pyreverse truyền vào các đối số nhưng nó [Run] có một phương thức
Chạy. load_command_line_configurationĐiều đó lấy các đối số làm đối số, nhưng khi lớp Run sử dụng nó, nó gọi nó mà không chuyển vào các đối số mà nó đã được đưa ra và thay vào đó sao chép sys. lát cắt argv mà hàm run_pyreverse đã tạo. Để sử dụng lớp, tôi sẽ phải vá mô-đun sys, điều này có vẻ sai và quá nhiều việc. Có lẽ quy trình phụ sẽ hoạt động
subprocess.call[['pyreverse'] + args]
Điều đó hơi khó chịu, nếu chúng ta có một ví dụ phức tạp hơn thì sao?
[[lỗi, thông báo lỗi,. ]] Một Composite để giữ và thực thi các Thành phầnimport ape.components.component as component file_name = component.__file__.rstrip['c'] command = 'pyreverse -o png -p componentplain {0}'.format[file_name] subprocess.call[shlex.split[command]]
Điều này tạo ra một tệp có tên là 'classes_componentplain. png’ [sử dụng -p biến nó thành sơ đồ cấp mô-đun, do đó, nó sẽ chọn tất cả các lớp, do đó có các lớp số nhiều].
Giá trị chung của một mô-đun
Đó vẫn không phải là một ví dụ đặc biệt thú vị, ít nhất là không trực quan. Đây là ví dụ được đưa ra trên blog pyreverse để hiển thị tất cả các phụ thuộc nhưng loại bỏ chi tiết để dễ hiểu hơn
command = 'pyreverse -o png -ASmy -k {0} -p hortator'.format[file_name] subprocess.call[shlex.split[command]]Đối số phụ thuộc Tùy chọn Mô tả-AHiển thị tất cả tổ tiên-Hiển thị tất cả các cộng sự-myAdd mô-đun để đặt tên [mô-đun? có. ]-kChỉ hiển thị tên lớp [không có phương thức hoặc thuộc tính]
Thêm chi tiết
Ví dụ trước rất hữu ích để hiển thị các mối quan hệ giữa lớp Hortator và các lớp khác, nhưng bạn cũng có thể có được cái nhìn chi tiết hơn về chỉ mô-đun hortator
command = 'pyreverse -c Composite -mn -a1 -s1 -f ALL -o png {0}'.format[file_name] subprocess.call[shlex.split[command]]
Trong trường hợp này, chúng tôi đã chỉ định lớp nên nó sẽ chỉ ghi lại Composite, ngay cả khi có các lớp khác trong tệp. Nó tạo một tệp có tên Composite. png
Nhà máyUml
Bây giờ tôi nhìn vào nó, có vẻ như định dạng không đẹp như tôi muốn. So sánh điều này với plantuml
Nhưng việc tạo biểu đồ plantuml rất tẻ nhạt và cần rất nhiều công việc xây dựng cũng như tra cứu cú pháp. Trên hết, đây chỉ là cách triển khai tạm thời, do đó bao gồm cả DummyClass , khi mã thay đổi, tôi có thể tạo lại tệp này và . Ngoài ra, nếu cái này được nhúng trực tiếp vào mô-đun máy làm vườn thì mỗi khi tôi dệt nó, sơ đồ sẽ tự cập nhật mà tôi không cần chú ý đến nó.
Phần kết luận
Kỳ vọng của tôi là tôi có thể nhúng pyreverse vào tài liệu để khi nó được dệt sẽ có cập nhật tự động. Điều này trong thực tế làm việc. Những việc tiếp theo cần làm để làm cho nó hữu dụng hơn có thể là