clang能否为Xcode项目生成一个调用图(在Objective-C中?

时间:2012-01-31 16:00:40

标签: objective-c xcode clang call-graph

我发现this example看起来像输出我想要的C ++。如何在Xcode项目中为Objective-C代码完成?

我看到提到Doxygen能够创建一个调用图,但我找不到一个例子。

(我想更好地了解铿锵声,但很难开始......)

1 个答案:

答案 0 :(得分:12)

绝对。你需要了解一些技巧,但这并不算太糟糕。

首先,您需要opt的兼容版本,因为它没有附带LLVM Apple产品。我从macports那里得到了我的:

port install llvm-3.0

然后你需要编译你的文件。计算参数有时会有点痛苦。最简单的方法是让Xcode构建它,然后转到日志并剪切并粘贴巨型构建线。我曾经能够手工破解这些,但我太懒了......

取出最后一个-o参数(方便地在编译行的末尾),并替换:

-S -emit-llvm -o - | opt-mp-3.0 -analyze -dot-callgraph

然后,如在另一个例子中那样:

$ dot -Tpng -ocallgraph.png callgraph.dot

请记住,在ObjC中有一些被称为很多的功能,您几乎从不关心这些功能。特别是几乎所有以objc_开头的内容。幸运的是,DOT格式是一个非常简单的文本文件,编写后处理脚本以删除你不想要的内容非常容易。

还有一个-print-callgraph参数,如果您想进一步处理,它会以稍微不同的格式输出这些信息。