iOS代码静态分析工具—Facebook Infer批量分析整个

2021-12-31  本文已影响0人  漂移的地平线

infer的使用需要安装,代码引用工具入侵代码 ,运行命令,查看分析报告文件这几步骤

1、分析整个项目

cd 到项目所在的目录

infer -- xcodebuild -target InferTest -configuration Debug -sdk iphonesimulator

结果

Found1issueInferTest/InferTest.m:21:error:NULL_DEREFERENCE

pointer `nsmeStr` last assigned on line20could be nullandis dereferenced by call to `setObject:forKey:` at line21,column9.

19.if(self){

20.NSString*nsmeStr=nil;

21.>[self.dict setObject:nsmeStrforKey:@"name"];

22.}

23.returnself;

Summaryof the reportsNULL_DEREFERENCE:1

过滤掉我们引入的第三库等不想做分析的文件

INFER_ARGS="--skip-clang-analysis-in-path^[\"Pods\"]"infer--xcodebuild-workspace./***.xcworkspace -configuration Debug -scheme ***

2、Infer 工作的流程:

第一个阶段是转化阶段,将源代码转成 Infer 内部的中间语言。类 C 语言使用 Clang 进行编译,Java 语言使用javac 进行编译,编译的同时转成中间语言,输出到 infer-out目录。

第二个阶段是分析阶段,分析 infer-out 目录下的文件,分析每个方法,如果出现错误的话会继续分析下一个方法,不会被中断,但是会记录下出错的位置,最后将所有出错的地方进行汇总输出。默认情况下,每次运行 infer 命令都会删除之前的 infer-out文件,你可以通过 --incremental 参数使用增量模式。增量模式下,运行 infer 命令不会删除 infer-out文件,但是会利用这个文件夹进行 diff,减少分析量。

3、问题类型

常见的问题传送门:https://github.com/facebook/infer/issues

下篇介绍java静态代码分析工具Sonarqube

上一篇下一篇

猜你喜欢

热点阅读