首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Objective-C代码进行静态分析

解析Objective-C代码进行静态分析
EN

Stack Overflow用户
提问于 2011-07-22 20:58:01
回答 4查看 4.7K关注 0票数 19

我喜欢静态分析和编译时检查,但我的大部分日常工作都是在Objective-C中完成的。为了解决这种紧张,我希望能够编写我自己的分析工具,以便在我的Objective-C项目上运行。

但在互联网上搜索一下就会发现,人们很难把一个完整的Objective-C语法组合在一起。One site基本上建议你放弃。

我确实找到了一个语法on the ANTLR website,但是当我启动它时,我根本无法让它解析任何东西。例如,它对行进行了响应:

代码语言:javascript
复制
void x();

使用src/main/resources/somecode.m line 1:0 no viable alternative at input 'void'

:(

我仔细研究了语法,发现了以下令人沮丧的免责声明:

代码语言:javascript
复制
it's a work in progress, most of the .h file can be parsed

但我需要一些可以同时解析接口和实现的东西。

有没有一个完整的Objective-C2.0语法?我更喜欢能够与Scala一起工作的工具(所以任何与Java兼容的工具都是完美的,比如ANTLR ),但是在这一点上,我愿意采用为另一个解析器工具包设计的工具。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-25 08:21:35

正如其他人提到的,Clang将是正确的解决方案。您可以提供您自己的AST使用者,即在遍历AST时将调用的类,使您不必担心解析或语法混乱。

Clang完全支持Objective-C,而且静态分析器中已经有很多类,您可以仿照这些类对自己的检查进行建模。(在clang/lib/StaticAnalyzer/Checkers中)。

该目录包含许多静态分析器检查器,但您也可以只创建一个普通的AST使用者。有关更多信息,请参阅http://code.google.com/p/chromium/wiki/WritingClangPlugins

票数 17
EN

Stack Overflow用户

发布于 2011-07-22 23:08:33

Clang是一个支持Objective-C的静态分析工具。我发现它在过去非常有用。

http://clang-analyzer.llvm.org/

票数 6
EN

Stack Overflow用户

发布于 2011-07-23 05:16:07

clang是可扩展的;您可以扩展其现有的静态分析,也可以创建自己的静态分析。llvm / clang的架构是一系列你可以(动态或静态)链接到的库。一个很好的起点是ARC (自动引用计数) migrator library,它负责静态分析和重写objective-c代码。

arcmt-test是一个使用ARC migrator库的小示例程序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6790350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档