我正在尝试理解C ++代码库。我使用了一些可以扫描代码并生成图表的免费工具,但它们并不那么容易理解。
我认为有用的是手动构建由UML工具辅助的东西。
我需要的是在运行时创建看起来像数据结构的东西。理想情况下,从UML中提取对象并进行排列。另外,我想组织子包中的类 - 比如靠近数据库的那些或者数据结构的分支。
这是一个包含许多Makesfiles的LINUX项目,但是当我使用我正在处理的exe的主目录中的文件创建项目时,许多像Visual Studio这样的工具“理解”代码
答案 0 :(得分:0)
老实说,在反向生成代码方面,你可能会遇到很多问题,从UML工具中获得任何有用的东西。
如果代码异常干净且具有良好的OO设计,良好的包容性,继承性和很少的关联性,那么它可能看起来很好......但是对于大多数真实的项目,当你将生成反转为UML时,结果图表是一个垃圾混乱,可能弊大于利。
如果您要坚持使用反向模型类型,请尝试配置UML实用程序以显示更少的项目 - 将其保留为聚合和继承等关键关系。当你开始显示使用关系而不是包含/聚合关系时,除非项目编写得非常好,否则一切都会连接到所有内容,这只会导致更多的混淆和micsonceptions。
我最好的建议是 - 如果该工具让它看起来难以理解,请节省一些时间并自己动手。
答案 1 :(得分:0)
非UML生成的UML和C ++代码不能很好地协同工作。特别是一旦涉及到模板,您可能会遇到更多麻烦,而实际上您需要问自己,获得这些模型所花费的时间实际上是不是更好地投入到老式的源代码阅读中。您最终必须阅读代码以了解它的作用,现在就开始吧。
答案 2 :(得分:0)
大多数工具只会给你一个结构视图(类和包),老实说,它并没有告诉你运行时发生了什么。
来自Sparx Systems的Enterprise Architect包含Visual Execution Analyzer,它可以从调试会话生成序列图。它支持C ++,但只支持Windows,因此您必须重建,但如果我理解正确,您已经在Visual Studio中运行了代码。Here's a brief demo(在这种情况下,代码在C#中,但它们也声称支持C ++)。这不是一个完整的往返,写入代码在UML类型的东西,但我个人认为这无论如何都是一个梦想。使用UML进行文档编制,使用编程语言进行编码。
答案 3 :(得分:-1)
不明白它是linux还是windows(你说linux,但后来说你正在使用visual studio)。
如果您想了解代码,Source Insight是一个很好的工具。不一定是UML,但可以实时生成漂亮的图形。