C ++ / Objective-C – 如何分析一个大项目(Unix方式)?

通常,为了分析大C项目,我更喜欢grep / GNU命令行工具, lint ,简单的Python脚本。 说“分析”C项目我的意思是收集代码统计信息,了解项目的结构,数据结构和执行stream程 – 什么函数调用什么,在不同模块中的入口点,静态成员,线程等。用面向对象的代码很好。

每当我有一个大的C ++(或Objective-C)项目,包含大量的源文件和几个目录,我想看看它的类图,数据字段,方法,消息,实例等。

我正在寻找一个最Unix的解决scheme。 你可以帮我吗?

当我上次搜索的时候,Doxygen是我能找到的最接近的。 这不是Unix的方式,但它是免费的Linux / Windows / MAC的。 它为我生成了下降图。 希望能帮助到你。

http://www.stack.nl/~dimitri/doxygen/

http://en.wikipedia.org/wiki/Doxygen

您的请求是针对各种视图,基于文本的,基于一些结构的。

你可能会考虑理解C ++ ,这些混合了这些。 不知道它是否ObjectiveC。

我们的源代码搜索引擎(SCSE)相当有限,但提供了比grep更快的“grep”方法。 对于大代码基地这一点很重要。 它将处理多种语言和方言。 我们没有一个Objective C方言,但是我认为我们的C或C ++前端实际上可以很好地工作,因为Objective C使用几乎相同的词法语法。

随着消息传递和动态调度四处走动,你是非常拧。 它甚至不依赖于语言,消息在C ++世界中也是如此。 没有工具可以分析代码并告诉应用程序的流程是什么样的。 在这些情况下,整个数据/执行流程可能取决于配置文件,如何将生产者/消费者连接在一起等。 如果你幸运的话,会有一些高级的文档,也许有图片和整体想法的描述等等。否则,这里唯一的选择是在调试器中运行它,对于任何给定的配置,看看里面发生了什么,步骤一步一步。 这不是一个真正的UNIX方式吗?