1

我正在尝试了解 C++ 代码库。我使用了一些免费的工具来扫描代码并生成图表,但它们并不那么容易理解。

我认为有用的是手动构建由 UML 工具辅助的东西。

我需要的是在运行时创建一些看起来像数据结构的东西。理想情况下,通过从 UML 中提取对象并安排它们。此外,我想将类组织在子包中——比如那些靠近数据库的类,或者数据结构的分支。

(我现在部分使用 Visual Studio 解决方案资源管理器中的文件夹执行此操作)

这是一个包含许多 Makesfile 的 LINUX 项目,但是当我使用正在处理的 exe 主目录中的文件创建项目时,像 Visual Studio 这样的许多工具“理解”代码

4

4 回答 4

0

老实说,在反向生成代码方面,您可能很难从 UML 工具中获得任何有用的东西。

如果代码异常干净并且具有良好的 OO 设计、良好的包含、继承和很少的关联,那么它可能看起来还不错……但是对于大多数实际项目,当您反向生成到 UML 时,生成的图表是蜘蛛般的混乱可能弊大于利。

但是,如果您要坚持使用反向模型类型,请尝试配置 U​​ML 实用程序以显示更少的项目 - 将其保留在聚合和继承等关键关系中。当你开始展示使用关系而不是包含/聚合关系时,除非项目写得很好,否则一切都会连接到一切,这只会导致更多的混乱和误解。

我最好的建议是 - 如果该工具使它看起来难以理解,请节省一些时间并自己动手。

于 2011-08-01T13:47:05.480 回答
0

不是从 UML 生成的 UML 和 C++ 代码不能很好地协同工作。尤其是一旦涉及到模板,您可能会遇到比您真正想要的更多的麻烦,您需要问问自己,花在获取这些模型上的时间实际上是否没有更好地投入到好的老式源代码阅读上。您最终将不得不阅读代码以了解它的作用,所以现在就开始吧。

于 2011-08-01T13:50:11.773 回答
0

大多数工具只会给你一个结构视图(类和包),老实说,它并没有告诉你运行时发生的很多事情。

Sparx Systems 的 Enterprise Architect 包含一个可视化执行分析器,它可以从调试会话中生成序列图。它支持 C++,但仅在 Windows 上支持,因此您必须重新构建,但如果我理解正确,您的代码已经在 Visual Studio 中运行。

这是一个简短的演示(在这种情况下,代码是 C#,但他们确实声称也支持 C++)。这不是一个完整的往返,在 UML 中编写代码之类的事情,但我个人认为无论如何这都是一个白日梦。使用 UML 进行文档化,使用编程语言进行编码。

于 2011-08-05T12:21:12.047 回答
-1

不明白是linux还是windows(你说linux,然后说你使用的是visual studio)。

如果您想了解代码,Source Insight是一个很好的工具。不一定是 UML,但可以实时生成漂亮的图表。

于 2011-08-01T13:35:51.857 回答