Objective-C头解析

Edu*_*cia 6 parsing objective-c clang

我需要解析一些Objective-C头.

  • 我已经尝试过使用Doxygen和解析XML输出,但它没有完全支持没有注释的Objective C头文件(它在属性中定义的宏上扼流圈,检查Doxygen没有正确识别属性)
  • 我也尝试过使用appledoc,但XML输出不够完整(例如,没有类的继承信息),并且它对属性上的宏有同样的问题.
  • 我也试过解析库Objective C元数据的输出(使用otool),但是注意到元数据没有保留方法的类型(所以你得到method:(id)param:(id))

有谁知道做我想要的好工具?我怀疑clang会帮助我,但到目前为止-ast-dump,类似的选项只是尝试为我没有的源(仅标题)生成AST.

Gre*_*ker 15

您可以使用libclang.libclang是一个编程接口,旨在实现语法突出显示和代码完成等工具.

clang -ast-dump适合我.(请注意,-ast-dump驱动程序不支持,因此您必须执行一些额外的工作来传递驱动程序通常处理的标志.您可以使用clang -### ...以查看驱动程序正在执行的操作.)

% clang -cc1 -ast-dump -fblocks -x objective-c /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
[...]
|-ObjCInterfaceDecl 0x1023727c0 <line:50:1, line:96:2> NSObject
| |-ObjCProtocol 0x102371350 'NSObject'
[...]
Run Code Online (Sandbox Code Playgroud)