0

我面临以下问题:我需要为 Objective-C 源代码(为 iOS 编写)生成详细报告。我需要能够显示以下内容:

班级报告:
班级名称 | 文件位置 | 方法数
ClassA | /my/path/ClassA.m | 7
B 类 | /my/path/ClassB.m | 12
....

方法报告:
方法名称 | 班级名称 | 文件定位
方法1 | 甲级 | /my/path/ClassA.m
方法2 | 甲级 | /my/path/ClassA.m
....

而且我还需要能够显示一些其他报告,但此时我有兴趣从某个地方开始。

请注意:
- 目前我不需要显示行数/复杂性/等。
- 与上述类似的报告就足够了(只要它包含上述信息,我会非常高兴;我可以解析信息并创建所需的报告)
- 我已经查看了 Doxygen 及其 xml 输出,但样本很少我运行的项目我没有得到 xml 文档中列出的所有方法(即使它们在文件中)。我必须调查为什么这些方法没有出现。

提前感谢所有答案/提示/评论....

4

2 回答 2

1

根据您对 Java 的熟练程度,您可能想看看JavaCC。它还具有用于解析 Objective-C 2.0 的语法。

http://lists.apple.com/archives/java-dev/2010/Sep/msg00097.html

我承认我几乎没有打开语法来看看它有多复杂/简单。它看起来井井有条,但我自己没有尝试过。一般来说,JavaCC 乍一看有点陡峭,但经过几个小时的玩弄,您应该很快就能找到自己的分数。一旦你得到它,解析任何语言都变得非常容易。

于 2012-05-22T13:35:17.000 回答
1

我们的源代码搜索引擎可能会帮助您很好地做到这一点。

SCSE 通常以交互方式用于搜索大型源代码并检查代码。它理解它正在搜索的语言的元素,并且它有一个针对 Objective C 的选项。因为它理解语言语法,所以它不会被空白、注释或带有有趣内容的字符串所迷惑。它还可以将搜索结果记录为文本日志和/或命中和位置(文件、行)的 XML 文件。

可以在批处理脚本中使用它来进行搜索和捕获结果。

为了做你想做的事,你会给 SCSE 提供以下查询并将结果记录到 XML 中(请原谅我的 ObjectiveC 语法,我不是这样的程序员):

    '@implementation' I     -- this would find class declarations, bind I and capture line #
    '@interface' I  -- if you wanted these, too
    '@end'   -- would find end-of-class declarations
    '+' '(' I ')' '{'  -- find method declations and bind name
    '-' '(' I ')' '{'  -- find static method declarations

现在您有了一组描述这些元素所在位置的 XML 文件。整合命中为您提供了类和内容的大纲模型,并且根据这些信息计算您的值应该非常简单。

如果您想要更准确的答案,我们的DMS 软件再造工具包有一个完整的 Objective C 解析器。此信息很容易从解析器生成的 AST 中提取。

于 2012-05-22T17:12:13.013 回答