2009-01-30 72 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中直接显示和交互操作。

相关问题