【问题标题】:Parser for reading Objective-C用于读取 Objective-C 的解析器
【发布时间】:2013-05-08 09:23:03
【问题描述】:

我想尝试从 Objective-C 类生成代码统计信息或简单的可视化。有哪些工具可以读取 obj-c 并给出语义信息,例如“A 类扩展 B 类”或“C 是 B 类的属性”?

  • 编译器? (叮当声)
  • 调试器? (lldb / gdb)
  • 正则表达式?

只是寻找有关此类任务的常用方法的指导。

编辑:我应该明确表示,目前我并不想做更多的事情,只是解决简单的类关系。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    我写了一个sample project,它使用clang 前端库来解析Objective-C 源代码,找出为哪些类定义了哪些方法。根据您描述的需求进行调整会很简单:

    • 每个声明都会收到回调。查找使用 CXIdxEntity_ObjCClass 类型声明的标识,因为它们是 Objective-C 类。
    • 在声明上调用clang_index_getObjCInterfaceDeclInfo() 以获取有关此声明的特定于类的信息。
    • 这个结构的.superinfo 成员告诉你超类是什么!

    【讨论】:

    • 一直在查看您的来源,这正是我所需要的,谢谢。遗憾的是,关于 libclang 的可读教程并不多,但这对帮助大有帮助!
    【解决方案2】:

    如果您只需要处理类关系,我认为基于自定义正则表达式的解析器就可以了。如果你需要更多的东西,正则表达式方法很快就会失败,你应该考虑使用 Clang to dump the AST,参见这个related question

    【讨论】:

      【解决方案3】:

      祝你好运,还有很多工作要做,这不是一件容易的事 正则表达式非常有限,但可能适用于简单的任务。可能是快速和肮脏的选择。 Clang 可能是一个不错的选择。 也可以看看CodeWorker

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多