【问题标题】:Ruby parser for obj-c用于 obj-c 的 Ruby 解析器
【发布时间】:2025-12-14 12:05:01
【问题描述】:

我正在尝试编写一个小的 ruby​​ gem 来生成关于我的 Xcode 项目的统计信息。 我对文件号、行号等没有问题,但我还想生成有关方法数、类数等的统计信息。

有某种用 Ruby 编写的 obj-c 解析器吗? 另一种方法是与 OCLint 可执行文件进行交互,但我担心对于一个小型实用程序来说这将是很多工作。

【问题讨论】:

  • @NickRoz 是正确的。您可以为 Obj-C 构建自己的上下文无关语法 (CFG)。这样做似乎有点矫枉过正,因为您只想提取特定的元数据。先试试正则表达式吧。
  • 同意@Sean,如果你想收集统计数据,编写自己的正则表达式来计算类和方法的出现是很容易的。

标签: objective-c ruby parsing


【解决方案1】:

我不知道有这样一个公开可用的解析器——或就此而言的语法——它代表 Ruby 中的 Obj-C 语法。

您可以想到以下几种方法来解决您的任务。

两个选项:

  1. 如果您有兴趣计算有关文件的某些元数据,您可以尝试使用正则表达式来提取这些元数据,从而制作一个天真的、穷人的“解析器”。

  2. 如果您只对已编译项目的方法数量等(符号)感兴趣,您可以使用 otoolnm 转储符号(nm 也将转储全局变量)对象(编译后的二进制文件)。

如果这些工具适用于已编译的 Swift 对象,则不是 100%


命令:

otool -TV <object>
nm -a <object>

【讨论】: