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

zek*_*kel 13 xcode objective-c clang call-graph

我发现这个例子看起来像输出我想要的C++.如何在Xcode项目中为Objective-C代码完成?

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

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

Rob*_*ier 12

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

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

port install llvm-3.0
Run Code Online (Sandbox Code Playgroud)

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

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

-S -emit-llvm -o - | opt-mp-3.0 -analyze -dot-callgraph
Run Code Online (Sandbox Code Playgroud)

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

$ dot -Tpng -ocallgraph.png callgraph.dot
Run Code Online (Sandbox Code Playgroud)

请记住,在ObjC 中有一些很多功能可以让你几乎从不关心.特别是,几乎任何开始的东西objc_.幸运的是,DOT格式是一个非常简单的文本文件,编写后处理脚本以删除您不想要的内容非常容易.

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