07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?

静态分析,这种可以帮助我们在编写代码的阶段就能及时发现代码错误,从而在根儿上保证工程质量的技术,就成为了iOS开发者最常用到的一种代码调试技术。
1.Xcode 自带的静态分析工具 Analyze
2.第三方静态编译器:OCLint、Infer、Clang静态分析器

OCLint
OCLint 是基于 Clang Tooling 开发的静态分析工具,主要用来发现编译器检查不到的那些潜在的关键技术问题。

Clang 静态分析器
Clang 静态分析器(Clang Static Analyzer)是一个用 C++ 开发的,用来分析 C、C++ 和 Objective-C 的开源工具,是 Clang 项目的一部分,构建在 Clang 和 LLVM 之上。Clang 静态分析器的分析引擎用的就是 Clang 的库。

Infer 的工作流程图如下:

image.png

小结
在今天这篇文章中,我和你一一分析了Clang 静态分析器、Infer和OCLint 这三个 iOS 静态分析工具。对于 iOS 的静态分析,这三个工具都是基于 Clang 库开发的。

其中 Clang 静态分析器和 Xcode的集成度高,也支持命令行。不过,它们检查的规则少,基本都是只能检查出较大的问题,比如类型转换问题,而对内存泄露问题检查的侧重点则在于可用性。

OCLint 检查规则多、定制性强,能够发现很多潜在问题。但缺点也是检查规则太多,反而容易找不到重点;可定制度过高,导致易用性变差。

Infer 的效率高,支持增量分析,可小范围分析。可定制性不算最强,属于中等。

综合来看,Infer 在准确性、性能效率、规则、扩展性、易用性整体度上的把握是做得最好的,我认为这些是决定静态分析器好不好最重要的几点。所以,我比较推荐的是使用 Infer 来进行代码静态分析。

你可能感兴趣的:(07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?)