2009-07-16 214 views
11

我有一些大型項目正在我的新工作場所工作,它們之間有一組複雜的靜態鏈接庫依賴關係。(Visual)C++項目依賴關係分析

庫的數量在40-50左右,很難確定結構最初是什麼意思,在完整的依賴關係圖上沒有明確的文檔。

有人會推薦哪些工具來提取這些數據?

據推測,在最簡單的方式中,如果做了以下:

  1. 定義組路徑對應於庫單元

  2. 集合中的所有的.cpp/h文件內的那些屬於這些編譯單元

  3. 捕獲一階的#include依賴關係樹

一個人將有足夠的信息來組成地圖 - 重構 - 並重新構圖,直到創建了一些訂單。

我注意到,http://www.ndepend.com有一些不錯的東西,但這不過是純粹的.NET。

我看了一些關於Doxygen能夠用配置完成一些靜態依賴關係分析的東西;有沒有人把它變成服務來完成這樣的任務?

回答

11

This link導致:

CppDepend

+0

現在,這就是我一直在尋找。我感到嫉妒NDepend產品可以做什麼。 然而,它確實是我們需要維護的傳統C++的高峯,這是最迫切需要這種工具的。 – 2009-07-16 17:07:09

+2

嗯......也許我很密集,但似乎CppDepend(2.8.5)不允許查看文件依賴關係(#include dependency)。它確實顯示了豐富的信息,但「僅」在項目+課堂級別上。 – 2011-09-01 05:30:15

3

這個工具是極好的分析包括樹:IncludeManager。您應該能夠從該工具獲得大量有用的信息。

+0

那裏有死者的鏈接。 – 2018-01-26 14:46:13

2

IncludeFinder是我以前使用過的免費工具。

+0

謝謝,它看起來有點過時,但有幾個人提到它,所以它一定在一個階段有鼎盛時期。 :) – 2009-07-16 17:06:17

+1

因爲它有源代碼,所以我可以做一些小修改以適應我的直接需求。但是,它不閃亮;) – peterchen 2009-07-16 19:58:27

1

我將開始使用需要依賴管理的大規模C++項目,所以自然我一直在環顧一些工具。我很驚訝地看到CppDepend被標記爲最喜歡的,因爲單個許可證的成本是300歐元,而IncludeManager是20英鎊。並且完成同樣的工作。爲了防止任何人使用這兩種工具中的任何一種或兩種工具,爲什麼我應該爲CppDepend花費額外的280英鎊(1英鎊到1歐元),是否有「好」的理由?

*請注意,我想擁有自己的個人副本,因此公司是否擁有它是無關緊要的。

4

http://github.com/yuzhichang/cppdep可能是你想要的。 我編寫它來分析大型C/C++項目的組件/包/包組之間的依賴關係。 這是由John Lakos的書「大型C++軟件設計」提供的dep_utils(adep/cdep/ldep)的重寫。

2

您可能可以使用DoxyS作爲幫助,它可以生成代表包含文件的Graps作爲生成文檔的一部分。

參見:http://www.doxys.org

-Martin