infer分析Objective-C代码质量

2,128 阅读1分钟
  • 简介
Facebook 已经利用 Infer 来分析 Android 和 iOS 上的移动应用程序。例如Facebook Messenger、Instagram 等。每个月,Infer 都会在开发人员正式提交代码之前发现数百个可能的 bug,有效减少了发现并解决 bug 的时间,提高了 Facebook 的产品开发效率。而且,Infer 所汇报的问题中 80% 都被开发人员所接受并进行解决,表现出很好的可信性。

Facebook 利用 Infer 分析 Android 平台和 iOS 平台 Objective-C 的代码。Infer 能够处理的语言还包括 C 语言和Java 语言。未来,Facebook 表示会计划扩展Infer 的能力,使其能够对更多语言进行分析。


  • 特点
能够检查的bug类型,比Xcode自带的Analyzer丰富,具体见官方文档。
Facebook开源的Infer,使用方式用command line,也支持持续集成工具,自动化调用。

  • 安装
通过命令行安装,或者下载 infer-osx-v0.17.0.tar.xz

  • 使用
//官方命令
//-UseNewBuildSystem=NO 
xcodebuild -workspace merchant.xcworkspace -configuration Debug -scheme miaoDaoBan -sdk iphoneos clean
xcodebuild -workspace merchant.xcworkspace -scheme miaoDaoBan -sdk iphoneos | tee xcodebuild.log
xcpretty -r json-compilation-database -o compile_commands.json < xcodebuild.log > /dev/null
infer run --skip-analysis-in-path Pods --keep-going --compilation-database-escaped compile_commands.json
//但是报错:
clang-8: error: unknown argument: '-index-store-path'
https://github.com/facebook/infer/issues/1198

//GitHub命令
xcodebuild -workspace merchant.xcworkspace -configuration Debug -scheme miaoDaoBan -sdk iphoneos -UseNewBuildSystem=NO clean
infer run --clang-blacklisted-flags-with-arg -index-store-path --keep-going --xcpretty -- xcodebuild -workspace merchant.xcworkspace -configuration Debug -scheme miaoDaoBan -sdk iphoneos -UseNewBuildSystem=NO
//但是报错:
clang-8: error: unknown argument: '-index-store-path'
https://github.com/facebook/infer/issues/1198

//其他方式
-sdk iphonesimulator 或者-sdk iphoneos
xcodebuild clean
xcodebuild -workspace merchant.xcworkspace -configuration Debug -scheme miaoDaoBan -sdk iphoneos -UseNewBuildSystem=NO LD=/usr/bin/true 
infer --keep-going --no-xcpretty -- xcodebuild -workspace merchant.xcworkspace -configuration Debug -scheme miaoDaoBan -sdk iphoneos -UseNewBuildSystem=NO | xcpretty


  • 参考
fbinfer.com 现在还在维护
github.com/facebook/in… 现在还在维护