2008-08-26 42 views
56

Về cơ bản tôi muốn các công cụ mà tạo ra mã nguồn trực quan như:Hiển thị mã nguồn C/C++?

  • chức năng gọi đồ thị
  • phụ thuộc đồ thị
  • ...
+1

bạn có nghĩa là phụ thuộc trong giao diện (ví dụ: biểu đồ thừa kế) hay phụ thuộc trong triển khai (biểu đồ cuộc gọi, ví dụ: có cạnh từ hàm A đến B nếu A gọi B trong thân của nó)? – Krystian

+0

Bạn có thể thử CppDepend (http://www.cppdepend.com), nơi bạn có thể tạo ra biểu đồ gọi hàm/đồ thị phụ thuộc và lọc các phần tử trong biểu đồ bằng cách sử dụng CQLinq.CppDepend là miễn phí cho các cộng tác viên nguồn mở. –

Trả lời

2

Có thể là một bản sao, nhưng hãy kiểm tra ollydbg, IDA Pro và this website có một loạt các tài nguyên với một số hình ảnh rất gợi cảm.

47

Doxygen thực sự tuyệt vời cho điều này, mặc dù bạn sẽ cần phải cài đặt GraphViz để có được các đồ thị để vẽ.

Khi bạn đã cài đặt mọi thứ, việc vẽ đồ thị thực sự khá đơn giản. Đảm bảo bạn đặt EXTRACT_ALLCALL_GRAPH thành true và bạn nên làm tốt.

Tài liệu đầy đủ về chức năng này cho Doxygen là here.

+1

Ngọt ngào. Rất đơn giản để sử dụng. GraphViz sửa đổi đường dẫn hệ thống của bạn, và doxygen sử dụng nó. – bobobobo

+2

+1 Tôi đồng ý. Doxygen là một công cụ rất hữu ích khi khám phá mã hiện có. Kiểm tra tùy chọn tạo mã nguồn và bạn dễ dàng điều hướng qua mã nguồn của mình mà không cần mở trình soạn thảo mã của bạn ... – neuro

+0

Đảm bảo cũng HAVE_DOT = YES – polypus74

5

Bạn có thể nhìn vào các công cụ khác nhau cho phần mềm thiết kế và mô hình hóa (Rational Rose, Sparx Enterprise Architect, Umbrello, vv). Phần lớn trong số họ có một số chức năng để đảo ngược mô hình bằng mã nguồn, và nhận được sơ đồ lớp UML, và đôi khi ngay cả biểu đồ trình tự (và điều này rất gần với biểu đồ gọi hàm).

Nhưng sau khi bạn nhận được một số hình ảnh về cơ sở mã dự án thực sự lớn, bạn có thể nhận ra rằng các đồ thị như vậy khá khó đọc và dễ hiểu. Khả năng hiển thị không mong muốn của độ phức tạp rất hạn chế.

Đối với tôi, sử dụng thành ngữ "phân chia và cai trị" là cách tiếp cận thuận tiện hơn. Bạn có thể trích xuất các khối chức năng hoặc lớp khác nhau từ một số cơ sở mã của bạn (chỉ cần phân loại các tệp cpp bằng các thư mục khác nhau đôi khi đủ). Một cách khác là sử dụng một số script (bash, python) để tạo các bảng csv đơn giản với các tham số quan tâm của các tệp, các lớp hoặc các hàm như "số phụ thuộc", v.v.).

+0

+1 nhận xét tốt. – neuro

9

Tôi đặc biệt khuyên bạn nên BOUML. Đó là một mô hình ứng dụng UML miễn phí, trong đó:

  • cực kỳ nhanh (công cụ UML nhanh nhất từng được tạo ra, hãy kiểm tra benchmarks),
  • có rắn C++ hỗ trợ nhập khẩu đá,
  • đã hỗ trợ xuất khẩu lớn SVG, mà là quan trọng, bởi vì xem đồ thị lớn ở định dạng vectơ, có tỷ lệ nhanh trong ví dụ Firefox, rất thuận tiện (bạn có thể nhanh chóng chuyển đổi giữa chế độ xem "mắt chim" và chế độ xem chi tiết lớp),
  • đầy đủ tính năng, được phát triển mạnh mẽ một cách ấn tượng (xem development history, thật khó để tin rằng quá trình này có thể tiến triển nhanh).

Vì vậy: nhập mã của bạn vào BOUML và xem ở đó hoặc xuất sang SVG và xem trong Firefox.

Đối với phiên bản miễn phí:

+0

+1 cho một công cụ UML miễn phí đáng được thử. – neuro

+0

Trình cài đặt Windows cho 4.23.7 ​​có thể được tìm thấy trên cùng trang sourceforge dưới dạng Douml trong phần "Tệp". – Zeks

+0

http://launchpad.net/~pasgui/+archive/ppa/ anh chàng này đang tạo dựng thường xuyên cho douml debian/ubuntu Như @Zeks đề xuất trong chủ đề khác. – kikeenrique

1

Có một công cụ cũ gọi CDOC mà chúng ta vẫn sử dụng để tạo cuộc gọi cây.

3

Nếu bạn sử dụng Visual Studio, bản phát hành Cuối cùng năm 2010 cho phép bạn tạo biểu đồ trình tự và biểu đồ phụ thuộc. Tuy nhiên, bản phát hành hiện chỉ hỗ trợ các dự án ứng dụng .NET.

Nhóm đã nhận được rất nhiều sự quan tâm hỗ trợ C++ trong bản phát hành trong tương lai, vì vậy bạn có thể muốn tiếp tục theo dõi. Trong thời gian chờ đợi, bạn có thể đăng trong Kiến thức Kiến trúc VS 2010 & Công cụ tạo mô hình diễn đàn tại http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads để yêu cầu cập nhật. Tôi biết nhóm sản phẩm rất thích nghe phản hồi của khách hàng về các công cụ.

Trong khi đó, bạn có thể tìm hiểu thêm về việc tạo sơ đồ trình tự và biểu đồ phụ thuộc từ mã NET trong các chủ đề sau:

Làm thế nào để: Tìm Mã Sử dụng Kiến trúc Explorer: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

thế nào để: Tạo tài liệu đồ thị từ mã: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

Cách: Khám phá mã với sơ đồ tuần tự: http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx

Để try các RC release và provide feedback, download nó at http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a

2

Trong addition để written tools above, bạn may try understand. Nhưng, nó không phải là miễn phí.

+0

Họ có một phiên bản dùng thử có thể khá tiện dụng. – karlphillip

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