我想在Objective-C类中生成代码统计信息或简单的可视化。哪些工具可以读取obj-c并提供语义信息,例如“A类扩展B类”或“C是B类属性”?
只是寻找关于此类任务的常用方法的指导。
编辑:我应该说清楚,我现在不是要做更多的事情而不是简单的阶级关系。
答案 0 :(得分:9)
我编写了一个sample project,它使用clang前端库来解析Objective-C源代码,找出为哪些类定义了哪些方法。根据您描述的需要调整它是很简单的:
CXIdxEntity_ObjCClass
类声明的标识,因为它们是Objective-C类。clang_index_getObjCInterfaceDeclInfo()
以获取有关此声明的特定于类的信息。.superinfo
成员告诉您超类是什么!答案 1 :(得分:2)
如果您只需要解决类关系,我认为基于自定义正则表达式的解析器可以做到。如果你需要更多东西,那么正则表达式很快就会注定失败,你应该考虑使用Clang dump the AST,看看这个related question。
答案 2 :(得分:0)
祝你好运,还有很多工作要做,这不是一件容易的事 Regexp非常有限,但可能适用于简单的任务。可能是快速和肮脏的选择。 Clang可能是个不错的选择。 您还可以查看CodeWorker