2013-05-08 102 views
5

我想玩弄生成代碼統計信息或Objective-C類的簡單可視化。哪些工具可以讀取obj-c並提供語義信息,如「A類擴展B類」或「C是B類的屬性」?用於閱讀的解析器Objective-C

  • 編譯器? (鐺)
  • 調試器? (lldb/gdb)
  • 正則表達式?

只是尋找這種任務的常用方法的指導。

編輯:我應該說清楚,我不是要做更多的工作,目前的簡單班級關係。

回答

9

我寫了一個sample project,它使用了clang前端庫來解析Objective-C源代碼,找出哪些類定義了哪些方法。這將是簡單,這個適應你所描述的需要:

  • 你每聲明回調。查找使用CXIdxEntity_ObjCClass種類聲明的身份,因爲這些是Objective-C類。
  • 致電clang_index_getObjCInterfaceDeclInfo()關於聲明以獲取關於此聲明的特定於類的信息。
  • .superinfo該結構的成員告訴你超類是什麼!
+0

通過您的來源查看,這正是我所需要的,謝謝。遺憾的是,libclang並沒有很多可讀的教程,但這對於幫助來說將會有很大的幫助! – Sam 2013-05-10 13:23:42

0

祝你好運,有很多工作要做,這不是一件容易的事 Regexp是非常有限的,但可能適用於簡單的任務。可能是快速&骯髒的選項。 Clang可以是一個不錯的選擇。 你也可以看看CodeWorker

2

如果你只是需要解決類關係,我認爲一個自定義的基於正則表達式的解析器會做。如果你需要更多的東西,正則表達式的方法很快就註定要失敗,你應該考慮使用Clang來獲得dump the AST,請看related question