我找到了 this example看起来它输出了我想要的 C++。 Xcode 项目中的 Objective-C 代码如何完成?
我看到有人提到 Doxygen 能够创建调用图,但我找不到示例。
(我想更好地了解clang,但是很难入门...)
最佳答案
当然。您需要了解一些技巧,但还算不错。
首先,您需要一个兼容版本的 opt
,因为它没有随 Apple 的 LLVM 一起提供。我从 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
参数,如果您想进行进一步处理,它将以稍微不同的格式输出此信息。
关于objective-c - clang 可以为 Xcode 项目生成调用图吗(在 Objective-C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082687/