我试图理解一个c++代码库。我使用了一些免费的工具来扫描代码并生成图表,但是它们不是那么容易理解。
我认为有用的是在UML工具的帮助下手工构造一些东西。
我需要的是创建一些看起来像运行时的数据结构。理想情况下,通过从UML中提取对象并安排它们。此外,我想组织类的子包-像那些接近DB,或朝着数据结构的分支。
(我现在部分使用Visual Studio解决方案资源管理器中的文件夹)
这是一个LINUX项目与许多Makesfiles,但许多工具,如Visual Studio,"理解"的代码,当我只是创建项目与文件在主目录的exe我正在工作
大多数工具只会给你一个结构视图(类和包),老实说,它并没有告诉你运行时发生了什么。
Sparx Systems的Enterprise Architect集成了一个Visual Execution Analyzer,它可以从调试会话生成序列图。它支持c++,但只在Windows上,所以你必须重新构建,但如果我理解正确的话,你已经让你的代码在Visual Studio中运行了。 这里有一个简短的演示(在这种情况下,代码是用c#编写的,但他们也声称支持c++)。这不是一个完整的往返,在uml中编写代码的事情,但我个人认为这是一个白日梦。使用UML编写文档,使用编程语言编写代码。老实说,在反向生成代码方面,从UML工具中获得任何有用的东西可能会有实质性的问题。
如果代码异常干净,有一个体面的OO设计,良好的包容,继承和很少的关联,那么它可能看起来不错…但是对于大多数实际的项目,当您将其反向生成为UML时,生成的图是一团混乱,可能弊大于利。
如果您打算坚持使用反向模型生成,那么尝试配置UML实用工具以显示更少的项—将其保留为关键关系,如聚合和继承。当你开始显示使用关系而不是包含/聚合关系时,除非项目写得很好,否则所有东西都倾向于连接到所有东西,而这只会导致更多的混乱和误解。
我最好的建议是——如果这个工具让你看起来难以理解,那就省点时间自己动手吧。
不是由UML生成的UML和c++代码不能很好地结合在一起。特别是当涉及到模板时,您可能会遇到更多的麻烦,而不是您真正想要的,您需要问自己,花在获得这些模型上的时间是否实际上更好地投资于老式的源代码阅读。您最终必须阅读代码才能理解它的作用,所以现在就开始吧。
不明白是linux还是windows(你说linux,然后说你在用visual studio)
如果你想理解代码,Source Insight是一个很好的工具。不一定是uml,但是可以实时生成漂亮的图形。