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

时间:2011-12-05 22:05:30

标签: c++ objective-c linux open-source code-analysis

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

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

我正在寻找最Unix way解决方案。你能救我吗?

3 个答案:

答案 0 :(得分:1)

当我上次搜索时,Doxygen是我能找到的最接近的。它不是unix方式,但它可以免费用于linux / windows / mac。它为我生成了下降图。希望它有所帮助。

http://www.doxygen.nl/

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

答案 1 :(得分:0)

您的请求适用于各种视图,一些基于文本,一些基于结构。

你可以考虑Understand for C++混合使用这些。不知道它是否有ObjectiveC。

我们的Source Code Search Engine (SCSE) 相当有限,但提供了比grep更快的“grep”方式。对于大型代码库,这很重要。它将处理多种语言和方言。我们没有Objective C方言,但我认为我们的C或C ++前端实际上可以很好地工作,因为Objective C使用了几乎相同的词法语法。

答案 2 :(得分:0)

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