文章目录
简介
https://fbinfer.com/docs/getting-started
Infer
是一个静态分析工具。Infer
可以分析 Objective-C
, Java
或者 C 代码
,报告潜在的问题。
任何人都可以使用 Infer 检测应用,这可以将那些严重的 bug 扼杀在发布之前,同时防止应用崩溃和性能低下
关于Infer
特性可以去 https://fbinfer.com/ 查看
Infer效率高,规模大,几分钟能扫描数千行代码;支持增量及非增量分析;分解分析,整合输出结果。infer能将代码分解,小范围分析后再将结果整合在一起,兼顾分析的深度和速度。
使用
安装
我们可通过Home Brew
进行快捷安装。
brew install infer
如果brew
很慢,就使用个代理吧。文件挺大的。
或者你可以从github上拉下源码,自己编译
https://github.com/facebook/infer/blob/master/INSTALL.md#install-infer-from-source
一般来说这样要快。
注:文档中使用了opam
也是需要brew install opam
的
通过brew
安装成功
设置 PATH 变量
如果使用brew install infer
安装的话请忽略这步。
如果手动下载编译就需要设置 PATH 变量
我们建议把 Infer 的执行目录加入到环境变量中,这样使用起来会简便一些。当然,你也可以用绝对路径。本文档后续默认执行路径已加入到环境变量中。
你可以使用以下命令设置环境变量。
cd infer-*v0\.\1\.0 &&
echo "export PATH=\"\$PATH:`pwd`/infer/infer/bin\"" \ >> ~/.bash_profile &&
source ~/.bash_profile
各种使用方式
https://fbinfer.com/docs/hello-world
官方文档对各种case的使用说明的很详细。
Object-C文件
对于 OC 单个文件分析,例如下面的 hello.m
#import <Foundation/Foundation.h>
@interface Hello: NSObject
@property NSString* s;
@end
@implementation Hello
NSString* m() {
Hello* hello = nil;
return hello.s;
}
@end
命令如下
infer run -- clang -c Hello.m
iOS工程 xcodebuild
- 创建一个
HelloWorldApp
工程 - 写入有问题的文件
hello.h
和hello.m
#import <Foundation/Foundation.h>
@interface Hello: NSObject
@property NSString* s;
@end
@implementation Hello
NSString* m() {