2009-07-16 612 views
11

Tôi có một vài dự án lớn mà tôi đang làm việc ở nơi làm việc mới, có một tập hợp phức tạp các phụ thuộc thư viện liên kết tĩnh giữa chúng.(Visual) Phân tích phụ thuộc dự án C++

Số libs khoảng 40-50 và thật khó xác định cấu trúc ban đầu có nghĩa là gì, không có tài liệu rõ ràng trên bản đồ phụ thuộc đầy đủ.

Bạn có thể giới thiệu công cụ nào để trích xuất dữ liệu đó?

Có lẽ, theo cách đơn giản nhất, nếu đã làm như sau:

  1. xác định các thiết lập các đường dẫn tương ứng với đơn vị thư viện

  2. bộ tất cả cpp/file .h trong những thuộc đối với những đơn vị biên soạn

  3. chụp cây phụ thuộc 1st trật tự #include

Một người sẽ có đủ thông tin để soạn bản đồ - người tái cấu trúc - và sắp xếp lại bản đồ, cho đến khi một người đã tạo ra một số thứ tự.

Tôi lưu ý rằng http://www.ndepend.com có thứ gì đó tuyệt vời nhưng thật không may là .NET.

Tôi đã đọc điều gì đó về Doxygen có thể thực hiện một số phân tích phụ thuộc tĩnh với cấu hình; có ai từng đưa nó vào dịch vụ để hoàn thành một nhiệm vụ như vậy không?

Trả lời

11

This link dẫn đến:

CppDepend

+0

Bây giờ đây là những gì tôi đang tìm kiếm. Tôi cảm thấy ghen tị với những gì mà sản phẩm NDepend có thể làm. Tuy nhiên nó thực sự là những ngọn núi của di sản C + +, chúng ta cần phải duy trì đó là cực kỳ cần các công cụ như thế này. –

+2

Hmm ... có lẽ tôi dày đặc, nhưng có vẻ như CppDepend (2.8.5) không cho phép xem phụ thuộc tập tin (#include dependency). Nó cho thấy một sự giàu có của thông tin, nhưng "chỉ" trên dự án + cấp lớp. –

3

Công cụ này là tuyệt vời cho việc phân tích bao gồm cây: IncludeManager. Bạn sẽ có thể nhận được rất nhiều thông tin hữu ích từ công cụ đó.

+0

liên kết chết-ish ở đó. –

2

IncludeFinder là công cụ miễn phí mà tôi đã sử dụng trước đó thành công.

+0

Cảm ơn, có vẻ hơi lỗi thời nhưng một vài người đã đề cập đến nó, vì vậy nó phải có thời hoàng kim của nó ở một giai đoạn. :) –

+1

vì nó có nguồn, tôi có thể thực hiện một số sửa đổi nhỏ phù hợp với nhu cầu trước mắt của tôi. Nhưng vâng, nó không sáng bóng;) – peterchen

1

Tôi sắp bắt đầu làm việc với một dự án quy mô lớn C++ cần quản lý phụ thuộc, vì vậy tự nhiên tôi đã xem xét một số công cụ. Tôi đã ngạc nhiên khi thấy rằng CppDepend được gắn cờ như là yêu thích ở đây như là một giấy phép duy nhất có giá € 300, trong khi IncludeManager là £ 20 .. Và làm công việc tương tự. Chỉ trong trường hợp bất cứ ai ở đây đã sử dụng một trong hai hoặc cả hai công cụ, có lý do "tốt" tại sao tôi nên chi tiêu thêm £ 280 (£ 1 ~ € 1) cho CppDepend?

* Xin lưu ý rằng tôi muốn có bản sao cá nhân của riêng mình để công ty có hay không có liên quan.

4

http://github.com/yuzhichang/cppdep có thể là những gì bạn muốn. Tôi đã viết nó để phân tích sự phụ thuộc giữa các thành phần/gói/nhóm gói của một dự án C/C++ lớn. Đó là một viết lại của dep_utils (adep/cdep/ldep) được cung cấp bởi cuốn sách của John Lakos Quy mô lớn C++ Phần mềm thiết kế.

2

Bạn có thể sử dụng DoxyS làm trợ giúp, tạo ra các tệp đại diện cho các tệp được bao gồm như là một phần của tài liệu được tạo.

Xem: http://www.doxys.org

-Martin