2009-01-30 57 views
0

我已經決定,我確實需要獲得一些流程圖,用於對我繼承的一些代碼進行反向工程。我沒有VS的Team版本,所以我無法將Team內置的功能用於Visio。所以我想我會解析.ncb(解析器信息)文件,並用點形成圖表(來自graphviz.org)。那有多難?但是我找不到該文件內部的任何文檔。Visual Studio .ncb文件的內部格式

我真的不想使用商業應用程序來做流程圖。而我見過的免費插件都假設我使用C#或VB。但是,我正在使用C和C++。

我確實嘗試過使用「Visual Programming Flow Chart」工具的Microsoft「Visual Studio學習包」。但它似乎不適用於C++。很近!

那麼,有沒有人有指向文件格式或其他建議(保持禮貌!)?

回答

2

我不認爲你有很多機會能夠解析NCB文件。它們採用專有的二進制格式,在每個視覺工作室版本之間都會發生變化並可能發生變化。從我讀過的地方來看,在VS2010中可能會丟棄NCB,並且使用SQL Server Express將智能感知信息保存在正常數據庫中。

您可能會考慮的另一個選擇是使用其他工具來分析您的代碼並構建圖表和UML圖表。 Doxygen在一定程度上做到了這一點,並且有很多商業工具可以做到。我有一些Rational Rose的個人經驗(現在可能已經不存在了),以及一個名爲Together的工具。 This list可能有一些幫助

+0

我得出結論,你是正確的。但是,似乎有一種叫做VCCodeModel的東西可以用來獲取我需要的信息。但在普通的C++中沒有例子... – 2009-02-04 16:54:00

0

對於「誰調用什麼」,「誰繼承/重載在哪裏」和「誰讀/寫全局變量」這個意義上的結構分析,我曾經使用過DeHydra(一個mozilla項目)進行分析和yed(www.yworks.com)進行圖形顯示。兩者都是免費的。

Dehydra在linux下運行,需要你的代碼通過gcc編譯。這不是一個太嚴重的障礙,因爲VC可以生成makefile,可以通過手動修改gnu make。 在我的情況下,需要對包含文件進行一些修補,但我終於可以獲得所需的信息。

我花了3天的時間纔得到DeHydra的工作,另外2天調整了makefile,並且包含了另外3天的時間來適應javascript代碼,這些代碼在DeHydra中提取了所需的信息。

DeHydra + Javascript現在可以在一個編譯器中運行一個包含代碼結構的graphml文件,它可以在yed中直接顯示和交互操作。

相關問題