6

いくつかの Objective-C ヘッダーを解析する必要があります。

  • XML出力を使用Doxygenして解析しようとしましたが、コメントなしのObjective Cヘッダーを完全にはサポートしていません(プロパティで定義されたマクロでチョークします。Doxygenがプロパティを正しく認識していないことを確認してください)
  • も使用してみましappledocたが、XML 出力が十分ではなく (たとえば、クラスの継承に関する情報がない)、プロパティのマクロで同じ問題が発生します。
  • また、Objective C メタデータ ライブラリの出力を解析しようとしましたが ( を使用otool)、メタデータがメソッドの型を保持していないことに気付きました (したがって、 が得られますmethod:(id)param:(id)) 。

私がやりたいことをするための良いツールを知っている人はいますか? 私は私clangを助けると思っていますが、これまでのところ、-ast-dumpおよび同様のオプションは、私が持っていないソース (ヘッダーのみ) の AST を生成しようとするだけです。

4

2 に答える 2

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'
[...]
于 2013-07-11T03:31:03.663 に答える