美文网首页
infer 项目静态分析

infer 项目静态分析

作者: Chenjifeng | 来源:发表于2020-05-07 22:41 被阅读0次

    使用infer进行项目静态分析

    项目不使用.xcworkspace时使用,xxx为项目名,下同

    infer -- xcodebuild -target xxx -configuration Debug -sdk iphonesimulator ,如果项目有使用第三方会报错

    error

    带有Pods带,需要使用带有分析第三方的命令

    infer run -- xcodebuild -workspace xxx.xcworkspace -scheme xxx -configuration Debug -sdk iphonesimulator

    分析成功

    如果第三方文件较多,分析会较为耗时,可以在工程目录下新建 .inferconfig 文件,可以过滤掉Pods文件夹下的第三方库, skip-analysis-in-path是一个数组, 想要过滤其他文件, 只需要增加路径即可如下图

    .inferconfig

    以上命令默认都是增量分析,可使用:xcodebuild -target xxx -configuration Debug -sdk iphonesimulator clean,保证增量到非增量转换。

    分析成功后,在工程目录下会生成build和infer-out文件夹,查看infer-out下bugs.txt或者report.json处理你的问题吧

    出现常见错误类型有:

    1、NULL_DEREFERENCE:空指针的情况。

    1.传参为0的情况下。例如代码中,在调用showAlertViewA()时,将tag传参为0,infer检测此处传0,判断为一个NULL空指针,所以爆出警告。这里可以理解为误报,不会出现问题。

    2.通过malloc,calloc,realloc等函数申请内存,当内存不足时,有可能会在该函数中返回NULL,如果没有做NULL的判断,则警告

    3.在创建NSArray或者NSDictionary时,传入的参数有可能会nil。由于NSArray与NSDictionary不接受空指针,所以在对其addObject或者setObject:forKey: 时需要进行判断一下是否为nil

    2、MEMORY_LEAK:内存泄漏:项目代码全面启动了ARC进行内存管理,在OC层没有扫描出内存泄露。目前扫描出的内存泄露问题都是使用了malloc或者ralloc等c语言内存申请函数,在函数提前return前没有及时free

    3、RESOURCE_LEAK:资源泄漏

    4、ASSIGN_POINTER_WARNING:由于在mrc时代,没有weak指针,所以一些view的属性声明是_、unsafe__unretain__的形式,在arc中,这个属性被判断为assign,需要将其修改为weak或者strong

    5、DIRECT_ATOMIC_PROPERTY_ACCESS:在代码中使用了使用了一个atomic的成员变量,infer建议我们将atomic修改为nonatomic。由于OC中,属性会被默认设置为atomic属性,我们需要显示将属性声明为nonatomic。

    6、IVAR_NOT_NULL_CHECKED:在代码中调用block,运行代码时,没有做判空处理。即需要改动为,if(block){block()}

    7、BAD_POINTER_COMPARISON:没有判断一个NSNumber类型的对象是不是空?

    8、TAINTED_VALUE_REACHING_SENSITIVE_FUNCTION:代码中使用了cookie的value。可以理解为误报

    9、PARAMETER_NOT_NULL_CHECKED:传参时没有判断是否为null,加一次判断就可以了

    10、STRONG_DELEGATE_WARNING:将一个delegate属性设置为strong的类型。

    11、PREMATURE_NIL_TERMINATION_ARGUMENT:没有判断是否为空

    12、REGISTERED_OBSERVER_BEING_DEALLOCATED:创建一个对象后,监听了某些通知,但是没有在dealloc中释放该通知。项目中出现这种问题的类,基本都是单例,不会被销毁。

    相关文章

      网友评论

          本文标题:infer 项目静态分析

          本文链接:https://www.haomeiwen.com/subject/qxeightx.html