5

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

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

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

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

4

3 回答 3

9

我编写了一个示例项目,它使用 clang 前端库来解析 Objective-C 源代码,找出为哪些类定义了哪些方法。将其适应您描述的需求会很简单:

  • 您在每个声明中都会收到回调。寻找用CXIdxEntity_ObjCClasskind 声明的标识,因为它们是 Objective-C 类。
  • 调用clang_index_getObjCInterfaceDeclInfo()声明以获取有关此声明的特定于类的信息。
  • 这个结构的.superinfo成员告诉你超类是什么!
于 2013-05-08T09:44:49.407 回答
2

如果您只需要解决类关系,我认为基于自定义正则表达式的解析器就可以了。如果您需要更多东西,正则表达式方法很快就会失败,您应该考虑使用 Clang转储 AST,请参阅这个相关问题

于 2013-05-08T09:46:11.847 回答
0

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

于 2013-05-08T09:33:46.343 回答