Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C-生成源代码报告_Objective C_Ios_Parsing - Fatal编程技术网

Objective-C-生成源代码报告

Objective-C-生成源代码报告,objective-c,ios,parsing,Objective C,Ios,Parsing,我面临以下问题:我需要为Objective-C源代码(为iOS编写)生成详细的报告。我需要能够显示以下内容: 课堂报告: 类名|文件位置|方法数 ClassA |/my/path/ClassA.m| 7 ClassB|/my/path/ClassB.m|12 方法报告: 方法名称|类名|文件位置 方法1 | ClassA |/my/path/ClassA.m 方法2 | ClassA |/my/path/ClassA.m 我还需要能够显示一些其他报告,但在这一刻,我感兴趣的只是从某个地方开始

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

课堂报告:
类名|文件位置|方法数
ClassA |/my/path/ClassA.m| 7
ClassB|/my/path/ClassB.m|12

方法报告:
方法名称|类名|文件位置
方法1 | ClassA |/my/path/ClassA.m
方法2 | ClassA |/my/path/ClassA.m

我还需要能够显示一些其他报告,但在这一刻,我感兴趣的只是从某个地方开始

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


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

根据您对Java的熟练程度,您可能需要看一看。它还具有用于解析Objective-C2.0的语法

我承认我几乎没有打开语法来看看它有多复杂/简单。它看起来组织得很好,但我自己没有尝试过。一般来说,乍一看JavaCC看起来有点陡峭,但只要花几个小时玩弄它,您就会很快找到自己的标记。一旦你掌握了它,解析任何语言都会变得非常简单。

我们的软件可能会帮助你很好地完成这项工作

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

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

要执行您想要的操作,您需要向SCSE提供以下查询并将结果记录到XML中(请原谅我的Objective语法,我不是这方面的程序员):

现在您有了一组描述这些元素所在位置的XML文件。集成hits将为您提供类和内容的概要模型,根据这些信息计算您的值应该非常简单


如果你想要一个更精确的答案,我们有一个。这些信息很容易从解析器生成的AST中提取。

@Teofilo Israel Vizcaino Rodrig:由于代码使用了许多类,其中一些类是第三方的,因此大部分代码没有文档记录。也就是说,我在Doxygen中自动使用了“EXTRACT\u ALL=YES”。但是你的评论让我思考,我检查了Doxygen中的其他设置,我注意到(EXTRACT_ALL)没有“EXTRACT ALL”,所以我返回将其他选项设置为YES(例如,私人成员不会)。我只是运行它,输出看起来好多了。谢谢你的评论…我会去看看我能从JavaCC.Hi Ira那里得到什么,坦率地说,我根本没有朝那个方向想(搜索文件)。我一定要看看你的源代码搜索引擎,看看是否可以解决我的问题。非常感谢你的建议。
    '@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