2009-08-13 42 views
9

Câu hỏi theo dõi/liên quan đến this.Hiển thị mã C++

Tôi đang cố nắm bắt một cơ sở mã lớn có hàng trăm và hàng trăm lớp và một hệ thống phân cấp thừa kế lớn. Tôi muốn có thể nhìn thấy "tĩnh mạch chính" của hệ thống phân cấp thừa kế trong nháy mắt - không phải tất cả các lớp "ngoại vi" chỉ làm một số điều rất cụ thể/chuyên biệt. Visual Studio của "Xem Class Diagram" làm cho một cái gì đó trông giống như một tàu và nó nằm ngang trên màn hình và không phải là rất có tổ chức. Bạn không thể mò mẫm nó một cách dễ dàng.

Tôi vừa thử doxygen và graphviz nhưng kết quả là .. hơi giống với Visual Studio. Tôi đang nhận được biểu đồ gọi tìm kiếm ngọt ngào nhưng lại một lần nữa quá chi tiết cho những gì tôi đang cố gắng để có được.

Tôi cần một cách nhanh chóng để tạo phân cấp thừa kế, trong một số loại có thể thu gọn chế độ xem.

Trả lời

6

Tại sao không chỉ làm điều đó bằng tay, nó là một kinh nghiệm học tập tuyệt vời khi bắt đầu làm việc với một cơ sở mã lớn. Tôi thường chỉ nhìn vào những gì lớp kế thừa từ những gì, và những gì lớp chứa những gì trường hợp, tài liệu tham khảo hoặc con trỏ đến các lớp khác. Có một mảnh giấy bên cạnh bạn và vẽ ...

+1

Tôi thực sự đã kết thúc việc lấy biểu đồ tàu và kiểm tra nó. Sau đó tôi vẽ một sơ đồ mới. Một trải nghiệm bổ ích! – bobobobo

5

Công cụ UML tốt nên thực hiện thủ thuật.

Dưới đây là danh sách các công cụ UML generic: http://en.wikipedia.org/wiki/List_of_UML_tools

Có rất nhiều trên mạng, tất cả với thay đổi bộ tính năng. Hãy thử chơi với một vài để xem bạn có nhận được kết quả mong muốn hay không. Nếu họ miễn phí những người thất bại bạn, bạn có thể phải vỏ ra cho một công cụ UML thương mại tốt

4

Bạn có thể thử CppDepend, nó không tạo phân cấp lớp như Doxygen nhưng nó có thể hiển thị 'bức tranh lớn' cho dự án của bạn, nó cũng hiển thị một số chỉ số mã.

4

Thay vì đi sâu vào công cụ Lớp thiết kế đầy đủ, chỉ cần sử dụng "Class View" hoặc "Object Browser" trong Visual Studio - họ trình bày heirarchies lớp đầy gập lại.

0

Định nghĩa của bạn về 'tĩnh mạch chính' là gì? Bạn muốn giảm đồ thị hoặc bộ xương (bạn có thể tìm hoặc viết một cái và áp dụng nó cho những gì Doxygen và phần còn lại tạo ra) hoặc, 'tĩnh mạch chính' có liên quan đến chức năng của mã và tôi không nghĩ công cụ tự động có thể giúp bạn với điều đó. Trừ khi bạn có thể chỉ ra cho nó 'Đây là những bit quan trọng mà làm đầu vào và đầu ra, chỉ cho tôi các yếu tố là một hoặc hai bước đi từ các đường dẫn giữa những'. Hum, âm thanh như một công cụ tuyệt vời để viết :)

... cấu trúc phân cấp thừa kế, trong một số loại xem có thể thu gọn.

một lần nữa, một ý tưởng ngọt ngào cho một công cụ!

2

Kiểm tra SourceNavigator, là mã nguồn mở, hoạt động trên nhiều nền tảng và có Trình duyệt phân cấp, Trình duyệt lớp, Trình duyệt tham chiếu chéo và nhiều thứ khác sẽ cho phép bạn điều hướng và hiểu mã.

Tôi đang sử dụng nó một thời gian, đặc biệt là khi tôi có mã mới để trải qua và hiểu.

3

Tôi đã thành công nhất với valgrind và kcachegrind để thực hiện việc này. Bạn chạy valgrind chống lại nhị phân gỡ lỗi của bạn, thực hiện bất kỳ hành động nào bạn quan tâm, sau đó nhập kết quả vào kcachegrind để xem mọi thứ bạn muốn biết về ai được gọi là gì, tần suất và thời gian. Thêm vào đó, bởi vì bạn làm nó một cách năng động, nó bắt các trường hợp mà phân tích tĩnh có khả năng sẽ không.

Tôi cũng đã có một số thành công bằng cách sử dụng các tính năng kỹ thuật đảo ngược của Kiến trúc sư doanh nghiệp, mặc dù điều này không kết thúc gần như độc đáo (nhưng bạn có được một mô hình UML khả thi tốt!).

Và cuối cùng, một công cụ được gọi là "Hiểu". Điều này khá tốt ở phân tích OO tĩnh, nhưng tôi nghĩ khá đắt tiền và không được sử dụng rộng rãi.

2

Đối với một sản phẩm thương mại có giá hợp lý, bạn có thể muốn xem SolidSX từ Vizlogix (www.vizlogix.com). (Nếu bạn ở ngoài Bắc Mỹ, hãy truy cập SolidSource - www.solidsourceit.com.)

Nó tạo ra một sơ đồ hướng tâm có thể được thu gọn và mở rộng. Nó cũng tích hợp với Visual Studio (cả BSC và .NET).

+0

+1 cho sự kỳ quặc và kỳ quặc :) – bobobobo

Các vấn đề liên quan